Go无法访问其他文件中的导出数据

时间:2017-01-17 10:32:47

标签: go struct

我的项目将这些值导出到不同的文件中:

//messages.go    
package types

    //BeaconMsg with data from google glass and the connected beacons
    type BeaconMsg struct {
        instanceID  int
        namespaceID int
        distance    int
    }

//beacondata.go
package types

import (
    "time"
)

//Beacondata with data from glasses containing beacon information
type Beacondata struct {
    instanceID   int
    namespaceID  int
    distance     int
    RegisterTime time.Time
}

在另一个文件中,我导入了如下类型:

import (
    "glassbackend/types"
)

抛出错误的代码:

req := new(types.BeaconMsg)
        if err := structFromRequest(req, r); err != nil {
            log.Errorf(context, "error extracting data from request %v", err)
            w.WriteHeader(http.StatusBadRequest)
            return
        }
        if req.namespaceID == "" || req.instanceID == "" {blab blabl}

然后这段代码抛出错误“req.namespaceID undefined(不能引用未导出的字段或方法namespaceID)(构建)

请注意,代码req := new(types.BeaconMsg)不会抛出任何错误,只会导致代码的最后一行。

有没有人知道发生了什么?我出口有问题吗?我认为还有很多其他事情无论是对还是错?

1 个答案:

答案 0 :(得分:4)

您只导出了类型BeaconMsg(类型名称),但这些字段未导出。

如果您想要从其他包中访问这些字段,您必须通过以大写字母开头来导出它们:

type BeaconMsg struct {
    InstanceID  int
    NamespaceID int
    Distance    int
}