• 1.26 Go语言类型断言简述


    1.26 Go语言类型断言简述

    什么是类型断言(Type Assertion)

    一个使用在接口值上的操作。

    作用:

    检查接口类型变量所持有的值是否实现了期望的接口或者具体的类型

    类型断言语法格式

    value, ok := x.(T)

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

    语法说明:

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

    • 如果T是具体某个类型,类型断言会检查x的动态类型是否等于具体类型T。如果检查成功,类型断言返回的结果是x的动态值,其类型是T

    • 如果T是接口类型,类型断言会检查x的动态类型是否满足T。如果检查成功,x的动态值不会被提取,返回值是一个类型为T的接口值。

    • 无论T是什么类型,如果xnil接口值,类型断言都会失败。

    示例代码:

    package main

    import "fmt"

    func main() {
       // 声明接口变量
       var x interface{}
       // 赋值
       x = 10
       // 使用接口断言判断(判断接口当中的值和类型满不满足条件)
       value, ok := x.(int)
       fmt.Println(value, ",", ok)
    }

    可以看到x变量是接口变量。x.(int)判断的是接口当中的值的类型是否是int类型

    注意:

    如果不接受第二个反参ok会造成异常panic,如果x值为nil也会造成panic

    类型断言配合Switch使用的示例

    /*
    定义一个接口类型判断的函数。根据传参判断接口的参数类型
    */
    func getType(a interface{}) {
       switch a.(type) {
       case int:
           fmt.Println("入参类型为int类型!")
       case string:
           fmt.Println("入参的类型为string类型!")
       case float64:
           fmt.Println("入参的类型为float类型!")
       default:
           fmt.Println("未知类型!")
      }
    }

    函数调用:

    func main() {
       // 声明接口变量
       var x interface{}
       // 赋值
       x = 10

       // 调用类型判断方法进行判断
       getType(x)
    }
  • 相关阅读:
    每天学习一个设计模式(十二):创建型之单例模式
    每天学习一个设计模式(十一):创建型之原型模式
    每天学习一个设计模式(十):创建型之工厂方法模式
    每天学习一个设计模式(九):创建型之建造者模式
    数据库
    操作系统
    计算机网络
    Java 基础知识
    Linux基本操作
    git 基本操作
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15944274.html
Copyright © 2020-2023  润新知