【问题标题】:golang struct from other package来自其他包的 golang 结构
【发布时间】:2017-07-28 01:27:16
【问题描述】:

情况:

我的项目结构如下:

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})

但是我收到了这个错误:

unknown structs.Built_in field 's' in struct literal

问题:

我做错了什么?

【问题讨论】:

标签: go struct


【解决方案1】:

在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    相关资源
    最近更新 更多