为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
阿波罗的战车 2021-06-03 17:54:59
我如何覆盖 go from package 中的变量?例如:文件1.gopackage Aimport "A/B"var Arg1 = "Hello"文件2.gopackage A/Bvar Arg1 = "World"  如果 arg1 存在于 file2.go 中,如何覆盖 file1.go 中的 arg1?
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您是否正在尝试做这样的事情,例如,特定位置(美国)(如果存在)覆盖一般位置(世界)?


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

如果没有,请提供一个更好、更具体的示例来说明您正在尝试做什么。


查看完整回答
反对 回复 2021-06-07
?
慕后森

TA贡献1802条经验 获得超5个赞

在这种情况下,我不确定您所说的“覆盖”是什么意思。(另外让我假设 file1.go 是“包 a”而 file2.go 是“包 b”)


如果您要访问Arg1,在包“b”内/从包“a”中定义,则例如:


// In package "a"

x = Arg1    // references a.Arg1

y = b.Arg1  // references b.Arg1

但是,这里没有发生类似覆盖的事情。在包“a”中,aArg1和 bArg1都可以作为不同的实体访问;后者通过强制限定符“b”。


查看完整回答
反对 回复 2021-06-07
  • 3 回答
  • 0 关注
  • 247 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信