首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用go语言覆盖嵌套包中的变量?

如何用go语言覆盖嵌套包中的变量?
EN

Stack Overflow用户
提问于 2013-04-17 07:06:15
回答 4查看 2.9K关注 0票数 1

如何覆盖go from包中的变量?

例如:

file1.go

代码语言:javascript
复制
package A

import "A/B"

var Arg1 = "Hello"

file2.go

代码语言:javascript
复制
package A/B

var Arg1 = "World"  

如果arg1存在于file2.go中,我如何在file1.go中覆盖arg1?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-17 11:53:45

你是否试图做这样的事情,例如,一个特定的地点(美国),如果存在的话,覆盖一个一般的地点(世界)?

代码语言:javascript
复制
// 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())
}

输出:

代码语言:javascript
复制
Hello, USA

如果没有,请提供一个更好和具体的例子,说明你正在努力做什么。

票数 1
EN

Stack Overflow用户

发布于 2013-04-17 07:37:39

在这种情况下,我不知道你所说的“凌驾”是什么意思。(也让我假设file1.go是'package a‘和file2.go是'package’)

如果您的意思是访问包"a“内/包内的包"b”中定义的Arg1,那么例如:

代码语言:javascript
复制
// In package "a"
x = Arg1    // references a.Arg1
y = b.Arg1  // references b.Arg1

然而,这里没有发生类似于压倒一切的事情。在包"a“中,a的Arg1和b的Arg1都可以作为不同的实体访问;后者通过强制限定符'b‘访问。

票数 3
EN

Stack Overflow用户

发布于 2013-04-17 07:13:02

你不能。包裹是自成一体的。如果包A不导出arg1 (小写),则对于另一个软件包B,它是不可见的--因此不可设置--。

顺便说一句:“A/B包”在我看来很奇怪。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16053678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档