是否可以在不同的文件范围内重用常量名称?

是否可以在不同的文件中有两个同名的常量?


foo.go


const {

    deviceId = 1     // I dont need this outside the file scope

}


type DeviceA struct {

    .. some fields.. 

    // I cannot make constant fields here

}


.. some methods ...

bar.go


const {

    deviceId = 2      // I dont need this outside the file scope

}


type DeviceB struct {

    .. some fields ..

    // I cannot make constant fields here

}


.. some methods ...

如果我这样做,我会得到它deviceId已被重新声明。如何将这些常量保留在文件的范围内?


如果可以解决这个问题,我不介意为常量使用某种命名空间。


茅侃侃
浏览 91回答 2
2回答

慕码人8056858

Go 编程语言规范套餐Go 程序是通过将包链接在一起构建的。一个包又是由一个或多个源文件构成的,这些源文件一起声明属于该包的常量、类型、变量和函数,并且可以在同一包的所有文件中访问。这些元素可以导出并在另一个包中使用。源文件组织每个源文件都包含一个 package 子句,定义它所属的包,然后是一组可能为空的导入声明,这些声明声明它希望使用其内容的包,然后是一组可能为空的函数、类型、变量声明,和常量。属于包的 [constants] 可以在同一包的所有文件中访问。Go 的基本编译单元是包。包中的源文件被合并以形成编译器的输入。

海绵宝宝撒

回答你的问题:不可能有两个具有相同名称的常量,在相同的范围内,在不同的文件中的相同包中。Go 中没有命名空间或文件范围。但是,在同一个包中可以有两个同名的常量,但在不同的范围内声明:package mainimport (    "fmt")const a = 1func main() {    const a = 2    fmt.Println(a) // output is 2}scope 详情请见:https://golang.org/ref/spec#Declarations_and_scope
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go