0
私はGolangに取り組んでおり、func init()
の仕組みについてちょっと混乱しています。私はmain
とpkg2
メインと呼ばれる2つのパッケージを持っていると言いましょう。私はpkg2の中にある変数を呼び出そうとしていますが、それはnilを与えます。基本的に、これは構造体である:初期値の中に割り当てられた値は値を維持しません
メインパッケージ:
import (
...
"github.com/myproject/config/pkg2"
)
func main() {
if pkg2.Myvariable == nil {
//it's nil. And it's entering in this conditional don't know why
}
}
PKG2パッケージ:
package pkg2
import (
...some imports...
)
var MyVariable
func init() {
MyVariable := "something"
//Here I assign a value to MyVariable
//I set an if here to check if it's executed
//and MyVariable get a value correctly
}
私も、私もpkg2.Myvariable
を呼び出す前にinit function
が実行されたことに気づきました。ですから、簡単に言うと、メインパッケージの中にはnilが与えられていますが、initの中では値が正しく割り当てられています。なぜそれがnilに戻るのですか? 何が足りないですか?ありがとうございました!
である。パッケージレベルではなく、init関数のスコープを持つローカルコピーを作成しているようです。 – Gavin
あなたは正しいです!ありがとうございました –