如何覆蓋包中的變量?如何用go語言重寫嵌套包中的變量?
例如:
file1.go
package A
import "A/B"
var Arg1 = "Hello"
file2.go
package A/B
var Arg1 = "World"
我如何可以覆蓋ARG1在file1.go如果file2中存在ARG1。走?
如何覆蓋包中的變量?如何用go語言重寫嵌套包中的變量?
例如:
file1.go
package A
import "A/B"
var Arg1 = "Hello"
file2.go
package A/B
var Arg1 = "World"
我如何可以覆蓋ARG1在file1.go如果file2中存在ARG1。走?
您是否試圖做這樣的事情?例如,某個特定位置(美國)如果存在,將覆蓋一般位置(世界)?
// 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
如果沒有,請提供你正在嘗試做一個更好的和具體的例子。
你不能。軟件包是獨立的。 如果程序包A不出口ARG1(小寫) 是不可見的 - 因此沒有設置能 - 爲其他包B.
BTW:「包A/B」看起來很奇怪,我。
我不確定在這種情況下,「覆蓋」是什麼意思。 (也讓我假設file1.go是'package a'和file2.go是'package b')
如果您的意思是訪問軟件包「a」中的軟件包「b」內/從中定義的Arg1
,則例如:
// In package "a"
x = Arg1 // references a.Arg1
y = b.Arg1 // references b.Arg1
但是,這裏沒有任何類似於覆蓋的情況。在包「a」中,a的Arg1
和b的Arg1
都可以作爲不同的實體訪問;後者通過強制性限定詞'b'。
謝謝!這是我想要的:) – jdk2588