My project exports these values in different files:
//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
}
In another file I import the types like this:
import (
"glassbackend/types"
)
Code that throws the error:
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}
but then this code throws me the error "req.namespaceID undefined (cannot refer to unexported field or method namespaceID)(build)
Note that the code req := new(types.BeaconMsg)
does not cast any error, only the last row of my code.
Does anyone have any idea as to what is happening? Am I doing something wrong with the exports? I don't think there is much else to do either right or wrong?
You only exported the type BeaconMsg
(the type name), but the fields are unexported.
If you want to access the fields too from other packages, you have to export them by starting their names with a capital letter:
type BeaconMsg struct {
InstanceID int
NamespaceID int
Distance int
}