脚本宝典收集整理的这篇文章主要介绍了go 类型转换方式(interface 类型的转换),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
go 在做类型转换时,报错:
cannot convert m (tyPE interface {}) to type Msg: need type assertion
go 的在 interface 类型转换的时候, 不是使用类型的转换, 而是使用
t,ok := i.(T)
补充:go []interface{}的类型转换
package main import ( "fmt" "strings" ) func getName(params ...interface{}) string { var stringSlice []string for _, param := range params { stringSlice = append(stringSlice, param.(string)) } return strings.Join(stringSlice, "_") } func main() { fmt.Println(getName("redis", "slave", "master")) }
上面的代码如果类型不匹配,会产生panic错误,如果想不产生panic错误
str, ok := param.(string)
如果ok为false,则str为空,不报错。
package main import ( "fmt" "reflect" "strings" ) func getName(params ...interface{}) string { var stringSlice []string for _, param := range params { stringSlice = append(stringSlice, param.(string)) } return strings.Join(stringSlice, "_") } func main() { var aa []interface{} = make([]interface{}, 3) aa[0] = "redis" aa[1] = "slave" aa[2] = "master" fmt.Println(reflect.TypeOf(aa)) fmt.Println(reflect.TypeOf(aa[0])) fmt.Println(getName(aa...)) }
输出:
[]interface {}
string
redis_slave_master
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本宝典。如有错误或未考虑完全的地方,望不吝赐教。
以上是脚本宝典为你收集整理的go 类型转换方式(interface 类型的转换)全部内容,希望文章能够帮你解决go 类型转换方式(interface 类型的转换)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。