dony113407 2017-01-26 01:47
浏览 52
已采纳

在单独的golang包中声明结构不能返回值,但是在明确声明时可以返回值

Trying to import a struct type from another package, and it returns perfectly, but the values of that struct can't be found unless declared without the use of an instantiation function.

// X executes and finds values fine, Z does not.

package main

func main () {

    x := &Command{}
    z := command.NewCommand()

    fmt.Println(x.command)
    fmt.Println(z.command)
}
package command

type Command struct {
    // Our structured data/object for Command
    alias   string
    command string
    verbose bool
}

func NewCommand() *Command {
    // Creates a new container for []Command objects
    return &Command{"","",false}
}

What exactly am I missing here...?

  • 写回答

2条回答 默认 最新

  • doubeijian2257 2017-01-26 04:56
    关注

    The relevant [golang spec]( https://golang.org/ref/spec#Exported_identifiers) is:

    An identifier may be exported to permit access to it from another package. An identifier is exported if both:

    the first character of the identifier's name is a Unicode upper case letter (Unicode class "Lu"); and the identifier is declared in the package block or it is a field name or method name. All other identifiers are not exported.

    Since your struct fields are not capitalized, they do not qualify to be exported to another package. In order to fix this, you need to capitalize the fields you would like to access externally.

    It might look something like this:

    type Command struct {
        Alias   string
        Command string
        Verbose bool
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥60 pb数据库修改或者求完整pb库存系统,需为pb自带数据库
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路