Go语言类型强制转换
发布时间:2020-12-16 18:01:29 所属栏目:大数据 来源:网络整理
导读:由于 Go语言是强类型的语言,如果不满足自动转换的条件,则必须进行强制类型转换。任意两个不相干的类型如果进行强制转换,则必须符合一定的规则。 强制类型的语法格式: var a T = (T) (b) ,使用括号将类型和要转换的变量或表达式的值括起来。 非常量类型的
由于 Go语言是强类型的语言,如果不满足自动转换的条件,则必须进行强制类型转换。任意两个不相干的类型如果进行强制转换,则必须符合一定的规则。 强制类型的语法格式: var a T = (T) (b) ,使用括号将类型和要转换的变量或表达式的值括起来。非常量类型的变量 x 可以强制转化并传递给类型 T,需要满足如下任一条件: 1) x 可以直接赋值给 T 类型变量。 2) x 的类型和 T 具有相同的底层类型。 示例代码如下所示: package main import{ "fmt" } type Map map[string]string func (m Map) Print() { for _,key := range m { fmt.Println (key) } } type iMap Map //只妥底层类型是 slice、map 等支持 range 的类型字面量,新类型仍然可以使用 range 迭代 func (m iMap) Print() { for _,key := range m { fmt.Println(key) } } func main() { mp := make(map[string]string,10) mp["hi"] = "tata" //mp 与 ma 有相同的底层类型 map[string]stirng,并且 mp 是未命名类型 var ma Map = mp // im 与 ma 虽然有相同的底层类型,但是二者中没有一个是字面量类型,不能直接赋佳,可以 // 强制进行类型转换 //var im iMap = ma var im iMap = (iMap) (ma) ma.Print() im.Print() }3) x 的类型和 T 都是未命名的指针类型,并且指针指向的类型具有相同的底层类型。 4) x 的类型和 T 都是整型,或者都是浮点型。 5) x 的类型和 T 都是复数类型。 6) x 是整数值或 []byte 类型的值, T 是 string 类型。 7) x 是一个字符串,T 是 []byte 或 []rune 。 字符串和字节切片之间的转换最常见,示例如下:
s := "hello,世界!"
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |