Go 类型断言和类型转换
Go 大约 795 字示例
func main() {
var i interface{} = "hello"
s := i.(string)
fmt.Println(s) // hello
s, ok := i.(string)
fmt.Println(s, ok) // hello true
f, ok := i.(float64)
fmt.Println(f, ok) // 0 false
f = i.(float64) // panic 即使是字符串123也会panic 因为类型不同
fmt.Println(f)
}
类型转换
使用t := i.(T)
对已知interface{}
进行转换。
类型断言后转换
方式一
使用t, ok := i.(T)
对未知interface{}
进行断言,若ok
为true
,则t
赋值为转换后的值,若ok
为false
,则t
为类型对应的默认值(如:int
默认值是0
,string
默认值是""
)。
方式二
使用switch
来判断object.(type)
的类型并进行转换。
func Cast(object interface{}) {
switch object.(type) {
case string:
fmt.Println("string#", object.(string))
case int:
fmt.Println("int#", object.(int))
case float64:
fmt.Println("float64#", object.(float64))
// 其他类型
}
}
参考
阅读 984 · 发布于 2021-01-13
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Windows 配置 SSH 免密登录 Linux 服务器阅读 1333
-
JavaScript/PHP 判断是否为微信内置浏览器阅读 2922
-
HTML 自定义表单验证信息阅读 1010
-
IDEA 使用 Swing Explorer 调试 Swing 和 AWT阅读 2137
-
IDEA 滚轮调节字体大小阅读 2349
-
Linux 之 CentOS yum 更换镜像阅读 2753
-
Kubernetes 设置 Pod 环境变量阅读 425
-
Java 并发编程之线程池大小阅读 1110
-
Linux 不排序去除重复行和不排序统计重复行阅读 5314
-
Java 并发编程之 CopyOnWriteArrayList阅读 1381