go语言获取变量类型的4种方式

在go语言中我们常常需要获取某个变量的类型,其他语言如python可以使用 type(x), javascript中可以使用 typeof x 获取变量类型, Go 语言中我们也可以通过一下4种方式获取变量的类型。

  1. 通过 fmt.Printf 的 %T 打印变量的类型;
Go 复制代码
var x float64 = 3.4
fmt.Printf("Type of x: %T\n", x)
  1. 通过反射获取类型 reflect.Typeof(变量) 、 reflect.ValueOf(变量).Kind() ;
Go 复制代码
var x float64 = 3.4
fmt.Println("Type of x:", reflect.TypeOf(x)) // float64

// ValueOf 获取数据类型
fmt.Printf("%s \n", reflect.ValueOf(x).Kind()) // float64
  1. 类型断言检测变量类型
Go 复制代码
   var i interface{} = "Hello"
    // 类型断言
    s, ok := i.(string)
    if ok {
        fmt.Println(s) 
    }
  1. 类型选择, 与类型推断类似,也是类型检查和转换的一种方式。
Go 复制代码
    var i interface{} = "Hello"

    // 类型选择
    switch v := i.(type) {
    case string:
        fmt.Println(v) // 
    case int:
        fmt.Println(v * 2)
    default:
        fmt.Println("Unknown type")
    }
相关推荐
yangyanping201088 小时前
Go语言学习之对象关系映射GORM
jvm·学习·golang
白毛大侠8 小时前
理解 Go 接口:eface 与 iface 的区别及动态性解析
开发语言·网络·golang
so2F32hj213 小时前
一款Go语言Gin框架DDD脚手架,适合快速搭建项目
开发语言·golang·gin
2301_8035545215 小时前
三大编程语言(Python/Go/C++)项目启动全解析
c++·python·golang
Learn-Share_HY18 小时前
[IT Network]如何在cisco packet tracer建立ssh的連線?
ubuntu·ssh·switch·cisco·networking·packettracer·networktutorial
木子欢儿19 小时前
在 Fedora 上配置 Go 语言(Golang)开发环境
开发语言·后端·golang
yangyanping2010819 小时前
Go语言学习之 Gin 生产级 flag命令行参数解析库
开发语言·golang·gin
yangyanping2010820 小时前
Go语言学习之配置管理库Viper
开发语言·学习·golang
pixcarp20 小时前
GORM基础入门使用教程
数据库·golang
呆萌很20 小时前
【GO】结构体定义练习题
golang