我的项目将这些值导出到不同的文件中:
//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)
不会抛出任何错误,只会导致代码的最后一行。
有没有人知道发生了什么?我出口有问题吗?我认为还有很多其他事情无论是对还是错?
答案 0 :(得分:4)
您只导出了类型BeaconMsg
(类型名称),但这些字段未导出。
如果您想要从其他包中访问这些字段,您必须通过以大写字母开头来导出它们:
type BeaconMsg struct {
InstanceID int
NamespaceID int
Distance int
}