2013-04-17 34 views

回答

1

您是否試圖做這樣的事情?例如,某個特定位置(美國)如果存在,將覆蓋一般位置(世界)?

// 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 

如果沒有,請提供你正在嘗試做一個更好的和具體的例子。

+0

謝謝!這是我想要的:) – jdk2588

1

你不能。軟件包是獨立的。 如果程序包A不出口ARG1(小寫) 是不可見的 - 因此沒有設置能 - 爲其他包B.

BTW:「包A/B」看起來很奇怪,我。

3

我不確定在這種情況下,「覆蓋」是什麼意思。 (也讓我假設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'。