我寫在main.go定義象下面這樣一些全球consts小Go應用程序的全局變量:訪問從子包
main.go
package main
import (
"github.com/JackBracken/global/sub"
)
const AppName string = "global string"
func main() {
sub.Run()
}
子/ sub.go
package sub
import "fmt"
func Run() {
fmt.Println(AppName)
}
我很新,去期待類似這樣的工作,但go build
引發錯誤sub/sub.go:6: undefined: AppName
。
我知道我可以做一些像創建一個globals
包,將其導入sub.go
和參考我的全局變量globals.AppName
等,但我想知道,如果有可能我原來的方式,還是我只是完全誤解範圍和包裹?
您無法導入「主」包 – JimB
@JimB我明白我的想法。全局變量僅在它們在其中定義的包中是全局變量?並從另一個必須導入包的包中引用它們?我想我假定一個子包能夠訪問其父節點的全局變量(但我讀的越多,「子包」的想法似乎就越沒有意義)。 –
子包甚至不是Go中的東西。每個軟件包都是獨立的,即使它們是其子目錄中的軟件包。那裏沒有隱式訪問。如果它在你的包裝中,你可以天生使用它。如果它不在你的包中,即使它在父目錄中,你仍然需要導入它。不幸的是,你不能導入'main'包(除了在測試文件中),所以'package main'中的任何內容都只能訪問該包。 – Kaedys