反映:是否可以获取底层类型信息?

我正在从go/ast到移植一个程序reflect。为了通过测试,如果底层类型不是内置的,我不仅需要获取顶级类型信息,还需要获取底层类型。


在下面的例子中,程序是否有可能知道 main.T 的底层类型是 main.TT?


package main


import "fmt"

import "reflect"


func main() {

    type TT int

    type T TT


    x := T(0)

    fmt.Println(reflect.TypeOf(x))

}

输出:


 main.T


ABOUTYOU
浏览 168回答 1
1回答

三国纷争

的基础类型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。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go