情况:
我有以下项目结构:
root
parser
parser.go
builtin
exit.go
hi.go
structs
base_structs.go
main.go
Run Code Online (Sandbox Code Playgroud)
..和base_structs.go文件看起来像这样:
package structs
type Built_in_func func([] string)
type Built_in struct {
s string
f Built_in_func
}
Run Code Online (Sandbox Code Playgroud)
我已经导入了我的包,我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})
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误:
结构文字中的未知结构.Built_in字段''
题:
我究竟做错了什么?
eug*_*ioy 11
在Go中,包外的名称的可见性取决于其第一个字符是否为大写.
因此,s从包外部实际看不到该字段structs,您会收到该错误.
如果你定义你的结构(注意大写):
type Built_in struct {
S string
F Built_in_func
}
Run Code Online (Sandbox Code Playgroud)
然后这将工作(再次大写):
structs.Built_in{S:"exit", F:builtin.Exit}
Run Code Online (Sandbox Code Playgroud)
你可以在这里阅读更多:
https://golang.org/doc/effective_go.html#names