如何使用Go语言reflect.TypeOf函数入门获取Golang变量类型?
- 内容介绍
- 文章标签
- 相关推荐
本文共计826个文字,预计阅读时间需要4分钟。
该段文字描述了一个Go语言中的编程问题,要求简单改写如下:
正确做法是调用 .Name() 或 .String() 方法:
package main import ( "fmt" "reflect" ) type MyInt int func main() { var x MyInt = 42 fmt.Println(reflect.TypeOf(x).Name()) // 输出 "MyInt" fmt.Println(reflect.TypeOf(x).String()) // 输出 "main.MyInt" }
-
.Name()只返回类型名(无包路径),对内建类型如int、string返回空字符串 -
.String()返回完整限定名(含包路径),更可靠,尤其跨包时 - 接口变量传进去会得到接口类型本身,不是底层值的类型——要先
reflect.ValueOf(x).Elem()再取类型
指针、切片、map 这类复合类型,reflect.TypeOf 返回的是“描述结构”的类型对象
它不展开嵌套,只告诉你这个变量当前是什么类型。比如 *[]string,reflect.TypeOf 返回的是指向切片的指针类型,不是 []string 本身。
本文共计826个文字,预计阅读时间需要4分钟。
该段文字描述了一个Go语言中的编程问题,要求简单改写如下:
正确做法是调用 .Name() 或 .String() 方法:
package main import ( "fmt" "reflect" ) type MyInt int func main() { var x MyInt = 42 fmt.Println(reflect.TypeOf(x).Name()) // 输出 "MyInt" fmt.Println(reflect.TypeOf(x).String()) // 输出 "main.MyInt" }
-
.Name()只返回类型名(无包路径),对内建类型如int、string返回空字符串 -
.String()返回完整限定名(含包路径),更可靠,尤其跨包时 - 接口变量传进去会得到接口类型本身,不是底层值的类型——要先
reflect.ValueOf(x).Elem()再取类型
指针、切片、map 这类复合类型,reflect.TypeOf 返回的是“描述结构”的类型对象
它不展开嵌套,只告诉你这个变量当前是什么类型。比如 *[]string,reflect.TypeOf 返回的是指向切片的指针类型,不是 []string 本身。

