如何覆盖go from包中的变量?
例如:
file1.go
package A
import "A/B"
var Arg1 = "Hello"file2.go
package A/B
var Arg1 = "World" 如果arg1存在于file2.go中,我如何在file1.go中覆盖arg1?
发布于 2013-04-17 11:53:45
你是否试图做这样的事情,例如,一个特定的地点(美国),如果存在的话,覆盖一个一般的地点(世界)?
// 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如果没有,请提供一个更好和具体的例子,说明你正在努力做什么。
发布于 2013-04-17 07:37:39
在这种情况下,我不知道你所说的“凌驾”是什么意思。(也让我假设file1.go是'package a‘和file2.go是'package’)
如果您的意思是访问包"a“内/包内的包"b”中定义的Arg1,那么例如:
// In package "a"
x = Arg1 // references a.Arg1
y = b.Arg1 // references b.Arg1然而,这里没有发生类似于压倒一切的事情。在包"a“中,a的Arg1和b的Arg1都可以作为不同的实体访问;后者通过强制限定符'b‘访问。
发布于 2013-04-17 07:13:02
你不能。包裹是自成一体的。如果包A不导出arg1 (小写),则对于另一个软件包B,它是不可见的--因此不可设置--。
顺便说一句:“A/B包”在我看来很奇怪。
https://stackoverflow.com/questions/16053678
复制相似问题