【问题标题】:unknown field in struct literal结构文字中的未知字段
【发布时间】:2016-06-13 00:51:01
【问题描述】:

我正在尝试创建一个结构,它给了我一个错误,告诉我该字段是未知的。

我要初始化的结构是:

package yelk

type PhoneOptions struct {
    phone string
    cc    string
    lang  string
}

我正在尝试像这样在cli.go 中初始化一个PhoneOptions 结构:

number := os.Args[1]
phoneOptions := yelk.PhoneOptions{phone: number}

我是go run cli.go 5555555555,但它给了我一个错误

./cli.go:29: unknown yelk.PhoneOptions field 'phone' in struct literal

我看到的所有出现此错误的 StackOverflow 帖子似乎都来自嵌套结构。我想知道我做错了什么。如果我只是尝试在其上运行 go build,cli.go 将给出此错误,所以我不认为这是我一直在运行它的输入。

知道为什么会这样吗?

【问题讨论】:

    标签: go


    【解决方案1】:

    以小写字符开头的字段是包内部的并且不公开,如果您想从另一个包中引用该字段,它需要以大写字符开头,例如。

    package yelk
    
    type PhoneOptions struct {
        Phone string
        Cc    string
        Lang  string
    }
    

    然后

    number := os.Args[1]
    phoneOptions := yelk.PhoneOptions{Phone: number}
    

    【讨论】:

    • 哦,真的,不知道!谢谢,会试试的!
    • 这里的编译器可能更友好一些
    • 谢谢!错误措辞让我感到困惑,所以我忘记了所有关于可见性规则...提交github.com/golang/go/issues/31053 以改进错误消息。
    猜你喜欢
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 2017-12-26
    • 2017-05-31
    • 2018-12-25
    相关资源
    最近更新 更多