我正在从go/ast到移植一个程序reflect。为了通过测试,如果底层类型不是内置的,我不仅需要获取顶级类型信息,还需要获取底层类型。在下面的例子中,程序是否有可能知道 main.T 的底层类型是 main.TT?package mainimport "fmt"import "reflect"func main() { type TT int type T TT x := T(0) fmt.Println(reflect.TypeOf(x))}输出: main.T
1 回答
三国纷争
TA贡献1804条经验 获得超7个赞
的基础类型main.T
是int
,不是main.TT
。反射包没有main.T
用 声明的知识main.TT
。
以下是规范对底层类型的说明:
每个类型 T 都有一个底层类型:如果 T 是预先声明的布尔值、数字或字符串类型之一,或者类型文字,则相应的底层类型是 T 本身。否则,T 的基础类型是 T 在其类型声明中引用的类型的基础类型。
type T1 string type T2 T1 type T3 []T1 type T4 T3字符串、T1 和 T2 的基础类型是字符串。[]T1、T3 和 T4 的基础类型是 []T1。
- 1 回答
- 0 关注
- 167 浏览
添加回答
举报
0/150
提交
取消