情况:
我有以下项目结构:
root
parser
parser.go
builtin
exit.go
hi.go
structs
base_structs.go
main.go
..而base_structs.go
文件如下所示:
package structs
type Built_in_func func([] string)
type Built_in struct {
s string
f Built_in_func
}
我已在我的main.go
中导入了该包,并且我引用了structs.Built_in
的结构。
这就是我要做的事情:
var builtin_list [] structs.Built_in
builtin_list = append(builtin_list, structs.Built_in{s:"exit", f:builtin.Exit})
builtin_list = append(builtin_list, structs.Built_in{s:"hi", f:builtin.Hi})
但是我收到了这个错误:
未知的structs.Built_in字段's'在struct literal中
问题:
我做错了什么?
答案 0 :(得分:11)
在Go中,包名外的名称的可见性取决于其第一个字符是否为大写。
因此,s
字段实际上从包structs
外部看不到,您就会收到该错误。
如果你定义你的结构(注意大写):
type Built_in struct {
S string
F Built_in_func
}
然后这将起作用(再次是大写):
structs.Built_in{S:"exit", F:builtin.Exit}
您可以在这里阅读更多内容: