go from package で変数をオーバーライドするにはどうすればよいですか?
例えば:
file1.go
package A
import "A/B"
var Arg1 = "Hello"
file2.go
package A/B
var Arg1 = "World"
arg1 が file2.go に存在する場合、file1.go の arg1 をオーバーライドするにはどうすればよいですか?
go from package で変数をオーバーライドするにはどうすればよいですか?
例えば:
file1.go
package A
import "A/B"
var Arg1 = "Hello"
file2.go
package A/B
var Arg1 = "World"
arg1 が file2.go に存在する場合、file1.go の arg1 をオーバーライドするにはどうすればよいですか?
この場合の「オーバーライド」の意味がわかりません。(また、file1.go が「パッケージ a」であり、file2.go が「パッケージ b」であると仮定します)
Arg1
パッケージ "a" 内/内からパッケージ "b" で定義されたにアクセスする場合は、次のようになります。
// In package "a"
x = Arg1 // references a.Arg1
y = b.Arg1 // references b.Arg1
ただし、オーバーライドに似た処理はここでは行われません。パッケージ "a" では、Arg1
a と b の両方Arg1
が異なるエンティティとしてアクセス可能です。後者は必須の修飾子 'b' を使用します。
できません。パッケージは自己完結型です。パッケージ A が arg1 (小文字) をエクスポートしない場合、他のパッケージ B では表示されないため、設定できません。
ところで:「パッケージA / B」は私にはかなり奇妙に見えます。
たとえば、特定の場所 (USA) が存在する場合、一般的な場所 (世界) を上書きするようなことをしようとしていますか?
// file A/B.go
package B
var location = "USA"
func Location() string {
return location
}
// file A.go
package A
import "A/B"
var location = "World"
func Location() string {
loc := B.Location()
if len(loc) == 0 {
loc = location
}
return loc
}
// file main.go
package main
import (
"A"
"fmt"
)
func main() {
fmt.Println("Hello,", A.Location())
}
出力:
Hello, USA
そうでない場合は、あなたがやろうとしていることのより良い具体的な例を提供してください.