我查看了 Golang 文档,但没有看到如何实现我想要做的事情的示例。具体来说,我正在尝试编写一个从 inode(由 表示syscall.Stat_t.Ino
,在我的机器上具有类型uint64
)到 ino_entry 的映射,定义为
type ino_entry struct {
st *syscall.Stat_t
nodes []string
}
其中 nodes 表示所有硬链接到 inode 的文件的名称。
但是,如果可以的话,我想避免将文字类型uint64
放入地图的规范中。也就是说map [uint64] ino_entry
,我宁愿不写,而是写map [typeof(syscall.Stat_t.Ino)] ino_entry
,其中typeof(x)
返回静态(即编译时)类型的x
. 我已经尝试过map [syscall.Stat_t.Ino] ino_entry
,并且类似于类型开关,map [syscall.Stat_t.Ino.(type)] ino_entry
但是这两个都是语法错误。不用说,map [reflect.Typeof(syscall.Stat_t.Ino)] ino_entry
不起作用。据我所知,在不对结构元素的类型进行硬编码的情况下实现这一点的唯一方法是使用inomap := make(map [interface{}] ino_entry)
然后使用类型断言访问元素(尽管我不知道正确的语法)。
有没有办法根据另一个变量、结构或接口成员的静态类型来声明变量的类型,而无需显式地对该类型进行硬编码?