13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

创新互联GO教程:Go语言类型断言简述

类型断言(Type Assertion)是一个使用在接口值上的操作,用于检查接口类型变量所持有的值是否实现了期望的接口或者具体的类型。

在Go语言中类型断言的语法格式如下:

value, ok := x.(T)

其中,x 表示一个接口的类型,T 表示一个具体的类型(也可为接口类型)。

该断言表达式会返回 x 的值(也就是 value)和一个布尔值(也就是 ok),可根据该布尔值判断 x 是否为 T 类型:

示例代码如下:

package main

import (
    "fmt"
)

func main() {
    var x interface{}
    x = 10
    value, ok := x.(int)
    fmt.Print(value, ",", ok)
}

运行结果如下:

10,true

需要注意如果不接收第二个参数也就是上面代码中的 ok,断言失败时会直接造成一个 panic。如果 x 为 nil 同样也会 panic。

示例代码如下:

package main

import (
    "fmt"
)

func main() {
    var x interface{}
    x = "Hello"
    value := x.(int)
    fmt.Println(value)
}

运行结果如下:

panic: interface conversion: interface {} is string, not int

类型断言还可以配合 switch 使用,示例代码如下:

package main

import (
    "fmt"
)

func main() {
    var a int
    a = 10
    getType(a)
}

func getType(a interface{}) {
    switch a.(type) {
    case int:
        fmt.Println("the type of a is int")
    case string:
        fmt.Println("the type of a is string")
    case float64:
        fmt.Println("the type of a is float")
    default:
        fmt.Println("unknown type")
    }
}

运行结果如下:

the type of a is int


标题名称:创新互联GO教程:Go语言类型断言简述
网页链接:http://cdbrznjsb.com/article/djpoeod.html

其他资讯

让你的专属顾问为你服务