亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從另一個包引用結構字段

從另一個包引用結構字段

Go
一只斗牛犬 2021-09-27 16:01:58
我有以下文件夾結構:.├── Makefile├── README.md├── myproject│   ├── handlers│   │   └── authorize_handler.go│   ├── models│   │   ├── id_token.go│   ├── server.go從authorize_handler.go我嘗試IdToken.idType從id_token.go文件中引用該字段。authorize_handler.gopackage handlersimport (    "encoding/json"    "log"    "net/http"    "myproject/models")func AuthorizeHandler(rw http.ResponseWriter, req *http.Request) {    idToken := new(models.IdToken)    decoder := json.NewDecoder(req.Body)    err := decoder.Decode(&idToken)    if err != nil {        panic(err)    }    log.Println(idToken.idType)}id_token.gopackage modelstype IdToken struct {    id     string `json:"id" type:"string" required:"true" max_length:"50"`    idType string `json:"idType" type:"idType" required:"false"`}當我開始server.go使用時go run server.go,出現以下錯誤:handlers/authorize_handler.go:29: idToken.idType undefined (cannot refer to unexported field or method idType)移動IdToken到authorize_handler.go確實可以解決問題。更改idType為IdType沒有。有什么想法或建議可以分享嗎?
查看完整描述

1 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

它在您當前導入時起作用的唯一方法是myproject/models包是否在您的$GOPATH/src目錄中,因為當您告訴它在沒有文件路徑的情況下導入時,它就是在那里尋找它。


或者,您可以使用相對路徑進行引用,例如../models但可能會變得混亂。此外,這種文件結構往往會導致循環依賴,所以如果你使用這種方法,請注意確保避免這種情況。


編輯:正如 captncraig 指出的那樣,編譯器似乎找到了包,所以這更有可能是結構中的字段沒有導出,因為它在定義中以小寫字符開頭。只需將其更改為大寫字母即可使其從包外部公開訪問。


type IdToken struct {

    Id     string `json:"id" type:"string" required:"true" max_length:"50"`

    IdType string `json:"idType" type:"idType" required:"false"`

}


查看完整回答
反對 回復 2021-09-27
  • 1 回答
  • 0 關注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號