如何使用Go语言reflect.TypeOf函数入门获取Golang变量类型?

2026-05-07 01:500阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计826个文字,预计阅读时间需要4分钟。

如何使用Go语言reflect.TypeOf函数入门获取Golang变量类型?

该段文字描述了一个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() 只返回类型名(无包路径),对内建类型如 intstring 返回空字符串
  • .String() 返回完整限定名(含包路径),更可靠,尤其跨包时
  • 接口变量传进去会得到接口类型本身,不是底层值的类型——要先 reflect.ValueOf(x).Elem() 再取类型

指针、切片、map 这类复合类型,reflect.TypeOf 返回的是“描述结构”的类型对象

它不展开嵌套,只告诉你这个变量当前是什么类型。比如 *[]stringreflect.TypeOf 返回的是指向切片的指针类型,不是 []string 本身。

阅读全文

本文共计826个文字,预计阅读时间需要4分钟。

如何使用Go语言reflect.TypeOf函数入门获取Golang变量类型?

该段文字描述了一个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() 只返回类型名(无包路径),对内建类型如 intstring 返回空字符串
  • .String() 返回完整限定名(含包路径),更可靠,尤其跨包时
  • 接口变量传进去会得到接口类型本身,不是底层值的类型——要先 reflect.ValueOf(x).Elem() 再取类型

指针、切片、map 这类复合类型,reflect.TypeOf 返回的是“描述结构”的类型对象

它不展开嵌套,只告诉你这个变量当前是什么类型。比如 *[]stringreflect.TypeOf 返回的是指向切片的指针类型,不是 []string 本身。

阅读全文