golang快速入门-17-golang的万能类型空接口interface{}和类型断言机制
golang的各种预置的变量类型int string等等都是实现了interface{}
package main import "fmt" //interface{}是万能数据类型 func myFunc(arg interface{}) { fmt.Println("myFunc is called...") fmt.Println(arg) //interface{} 改如何区分 此时引用的底层数据类型到底是什么? //给 interface{} 提供 “类型断言” 的机制
// arg.(string)相当于 ok=arg instanceOf string;value=arg;
value, ok := arg.(string) if !ok { fmt.Println("arg is not string type") } else { fmt.Println("arg is string type, value = ", value) fmt.Printf("value type is %T\n", value) } } type Book struct { auth string } func main() { book := Book{"Golang"} myFunc(book) myFunc(100) myFunc("abc") myFunc(3.14) }
浙公网安备 33010602011771号