繁体   English   中英

来自其他软件包的golang结构

[英]golang struct from other package

情况:

我有以下项目结构:

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引用了struct。

这就是我想要做的:

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字段中的struct文字

题:

我究竟做错了什么?

在Go中,包外部名称的可见性取决于其首字符是否为大写。

因此,字段s实际上从包structs外部不可见,您会收到该错误。

如果您将结构定义为(请注意大写):

type Built_in struct {
    S string
    F Built_in_func
}

然后这将起作用(再次大写):

structs.Built_in{S:"exit", F:builtin.Exit}

你可以在这里阅读更多:

https://golang.org/doc/effective_go.html#names

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM