多态用法 package main //一种事物的多种形态,都可以按照统一的接口进行操作 //多态 import ( "fmt" "math/rand" "sort" ) type Student struct { Name string Id string Age int sortType int } type Book struct { Name string Author string } //切片默认传地址 type StudentArr
原文链接:https://www.2cto.com/kf/201712/703563.html 1. 用于判断变量类型 demo如下: switch t := var.(type){ case string: //add your operations case int8: //add your operations case int16: //add your operations default: return errors.New("no this type") } } //空接
一.类型转换 1.1 简单类型转换 格式 valueOfTypeB = typeB(valueOfTypeA) int 转 float64 package main import "fmt" func main(){ var num int = 12 var f float64 f = float64(num) fmt.Println(f) } float64 转int package main import "fmt" // float64 -> int f
package main import ( "fmt" ) type Point struct { x int y int } func main() { var a interface{} var point Point = Point{1, 2} a = point //oK // 如何将 a 赋给一个Point变量 var b Point // b = a //不可以 // b = a.(Point) //可以,类型断言 b = a.(Point) fmt.Println(b)
Go语言中的类型断言,语法上是这样的: x.(T) 其中,x是interface接口的表达式,T是类型,称为被断言类型. 补充一下,接口有接口值的概念,其包括动态类型和动态值两部分. 类型断言根据T的不同可以分为两种情况: 1. T是具体类型 类型断言首先检查x的动态类型是否是T. 如果是,类型断言的结果就是x的动态值. 如果否,操作就会panic 例如, var w io.Writer w = os.Stdout f := w.(*os.File) // success: f == os.St
一.基本介绍 类型断言:由于接口是一般类型,不知道具体类型,如果要转成具体类型,就需要使用类型断言. 如果希望将一个空接口类型重新转换成对应的类型,那么需要使用类型断言,能转换成功是因为这个空接口原先是指向这个类型的. type Point struct { x int y int } func main() { var a interface{} var p = Point{1, 2} a = p // 这是可以的 var b Point //b = a // 这时不可以的,要使用断言,如下