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

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

是否有可能默認情況下不包含 subdir 中的 Golang 包?

是否有可能默認情況下不包含 subdir 中的 Golang 包?

Go
森欄 2022-01-17 18:27:56
我正在使用一個 golang 包,比如 name pkgfoo;而作者明確表示,如果我們想用一個包subpkg下pkgfoo,我需要明確進口subpkg。我不明白背后的原因。如果我在Golang中導入頂級pkg,subpkg不會自動導入嗎?package mainimport (    "myownpackage"    "github.com/usera/pkgfoo"    "github.com/usera/pkgfoo/subpkg")func main() {    // Use functions in pkgfoo, and use functions in pkgfoo/subpkg    // ......    http.HandleFunc("/login", login)    err := http.ListenAndServe(":9090", nil) // setting listening port    if err != nil {        log.Fatal("ListenAndServe: ", err)    }}我的問題是我是否真的需要import "github.com/usera/pkgfoo/subpkg"聲明。
查看完整描述

1 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

Go 包由一個或多個源文件構成,這些源文件被組織到文件系統中的文件夾中。同一個包的源文件必須在同一個文件夾中。


但是在 Go 中沒有“包層次結構”,“子包”術語只是指一個包的文件夾是另一個包的子文件夾。我們經常將包組織到作為其他子文件夾的文件夾中,因為這些包之間存在某種聯系(例如,一個包僅由父文件夾中的另一個存在使用;或者子文件夾中的包是特定的或更特殊的實現包在父文件夾中;或者只是一個邏輯分組 - 請參閱答案的結尾)。


所以每當你這樣做


import "github.com/usera/pkgfoo"

它只導入pkgfoo,沒有其他包與前綴共享相同的路徑。如果您github.com/usera/pkgfoo/subpkg也需要,您還需要顯式導入它:


import (

    "github.com/usera/pkgfoo"

    "github.com/usera/pkgfoo/subpkg"

}

Go 博客:標準庫中使用的目錄上的包名稱:


目錄。標準庫使用類似目錄、、、crypto和container來對相關協議和算法的包進行分組encoding。image這些目錄之一中的包之間沒有實際關系;目錄只是提供了一種排列文件的方法。只要導入不會創建循環,任何包都可以導入任何其他包。


查看完整回答
反對 回復 2022-01-17
  • 1 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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