Go语言断言(判断变量类型)

待我称王封你为后i 2023-10-03 10:06 30阅读 0赞

一、断言

  • 只要实现了接口的全部方法认为这个类型属于接口类型,如果编写一个接口,这个接口中没有任何方法,这时认为所有类型都实现了这个接口.所以Go语言中interface{}代表任意类型
  • 如果interface{}作为方法参数就可以接收任意类型,但是在程序中有时有需要知道这个参数到底是什么类型,这个时候就需要使用断言
  • 断言使用时使用interface{}变量点括号,括号中判断是否属于的类型
  1. i interface{
  2. }
  3. i.(Type)

断言的两大作用:

  • 判断是否是指定类型
  • 把interface{}转换为特定类型

二、代码示例

断言可以有一个返回值,如果判断结果是指定类型返回变量值,如果不是指定类型报错

  1. func demo(i interface{
  2. }){
  3. result:=i.(int)
  4. fmt.Println(result)
  5. }
  6. func main() {
  7. /*
  8. 参数是456时,程序运行正常,输出:
  9. 456
  10. 参数是false时报错:
  11. panic: interface conversion: interface {} is bool, not int
  12. */
  13. demo(456)
  14. }

断言也可以有两个返回值,这时无论是否是指定类型都不报错.

  • 第一个参数:

    • 如果正确:返回值变量值
    • 如果错误:返回判断类型的默认值
  • 第二个参数:

    • 返回值为bool类型,true表示正确,false表示错误
  1. func demo(i interface{
  2. }) {
  3. result, ok := i.(int)
  4. fmt.Println(result, ok)
  5. }
  6. func main() {
  7. /*
  8. 参数是456时,程序运行正常,输出:
  9. 456 true
  10. 参数是字符串"abc"时程序运行正常,输出:
  11. 0 false
  12. */
  13. demo("abc")
  14. }

发表评论

表情:
评论列表 (有 0 条评论,30人围观)

还没有评论,来说两句吧...

相关阅读

    相关 go语言变量

        变量是所有语言中最基本的元素,程序可以通过定义一个变量来申请一块数据的内存空间。GO语言的变量使用方式和C语言接近,但更具备强大的灵活性。 1.变量声明 GO语言的

    相关 Go语言变量

    Go语言变量   变量源于数学,是计算机语言中能存储计算结果或能表示值抽象概念。变量可以通过变量名方法问。 Go语言变量名由字母、数字、下划线组成,其中首个字符不能为数字

    相关 Go语言变量

    Go语言变量的声明(使用var关键字) 标准格式 Go语言的变量声明的标准格式为: var name type 变量声明以关键字 var 开头,后置变量类型,行