Go interface 変数編
interfaceとは
interfaceとはなんでも入れられる変数の型です。他にも用途はありますが今回はなんでも入れられる変数として使用する時にどんな感じに使うかまとめて行きます!
定義、代入
package main import "fmt" func main() { var i interface{} // interface型を定義 i = 1 // int fmt.Println("int: ", i) i = 1.1 // float64 fmt.Println("float64: ", i) i = "文字" // string fmt.Println("string: ", i) i = 0x01 // byte fmt.Println("byte: ", i) }
結果
int: 1 float64: 1.1 string: 文字 byte: 1
型変換
interfaceは全ての型と互換性があるため、全ての型に変換することができます。それを型アサーションといいます。やってみましょう!
package main import "fmt" func main() { var i interface{} = "english" str, ok := i.(string) fmt.Println("str: ", str, ok) float, ok := i.(float64) fmt.Println("float: ", float, ok) intger, ok := i.(int) fmt.Println("int: ", intger, ok) }
結果
str: english true float: 0 false int: 0 false
型判定
interfaceの型判定はswitch文を使用します。
package main import "fmt" func main() { var i interface{} = "english" switch v := i.(type) { case string: fmt.Println("string: ", v) case int: fmt.Println("int: ", v) case float64: fmt.Println("float64: ", v) default: fmt.Println("default: ", v) } }
結果
string: english
今日はここまでとします!