struct literal中的未知字段

Jul*_*ien 34 go

我正在尝试创建一个结构,它给了我一个错误,告诉我这个领域是未知的.

我想要初始化的结构是:

package yelk

type PhoneOptions struct {
    phone string
    cc    string
    lang  string
}
Run Code Online (Sandbox Code Playgroud)

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

number := os.Args[1]
phoneOptions := yelk.PhoneOptions{phone: number}
Run Code Online (Sandbox Code Playgroud)

我这样做,go run cli.go 5555555555但它给了我一个错误

./cli.go:29: unknown yelk.PhoneOptions field 'phone' in struct literal
Run Code Online (Sandbox Code Playgroud)

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

知道为什么会这样吗?

sup*_*ell 71

以小写字符开头的字段是包内部且未公开的字段.如果要从另一个包引用该字段,则需要以大写字符开头,例如.

package yelk

type PhoneOptions struct {
    Phone string
    Cc    string
    Lang  string
}
Run Code Online (Sandbox Code Playgroud)

然后

number := os.Args[1]
phoneOptions := yelk.PhoneOptions{Phone: number}
Run Code Online (Sandbox Code Playgroud)

  • 编译器在这里可能会更友好一些 (11认同)
  • 谢谢!错误措辞让我很困惑,所以我忘记了所有关于可见性规则的信息...提交了 https://github.com/golang/go/issues/31053 以改进错误消息。 (8认同)