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

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

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

Go
茅侃侃 2023-03-21 15:20:06
是否可以在不同的文件中有两个同名的常量?foo.goconst {    deviceId = 1     // I dont need this outside the file scope}type DeviceA struct {    .. some fields..     // I cannot make constant fields here}.. some methods ...bar.goconst {    deviceId = 2      // I dont need this outside the file scope}type DeviceB struct {    .. some fields ..    // I cannot make constant fields here}.. some methods ...如果我这样做,我会得到它deviceId已被重新声明。如何将这些常量保留在文件的范围内?如果可以解决这个问题,我不介意为常量使用某种命名空间。
查看完整描述

2 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

Go 编程语言规范

套餐

Go 程序是通过将包链接在一起构建的。一个包又是由一个或多个源文件构成的,这些源文件一起声明属于该包的常量、类型、变量和函数,并且可以在同一包的所有文件中访问。这些元素可以导出并在另一个包中使用。

源文件组织

每个源文件都包含一个 package 子句,定义它所属的包,然后是一组可能为空的导入声明,这些声明声明它希望使用其内容的包,然后是一组可能为空的函数、类型、变量声明,和常量。


属于包的 [constants] 可以在同一包的所有文件中访问。

Go 的基本编译单元是包。包中的源文件被合并以形成编译器的输入。


查看完整回答
反对 回复 2023-03-21
?
海绵宝宝撒

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

回答你的问题:不可能有两个具有相同名称的常量,在相同的范围内,在不同的文件中的相同包中。


Go 中没有命名空间或文件范围。


但是,在同一个包中可以有两个同名的常量,但在不同的范围内声明:


package main


import (

    "fmt"

)


const a = 1


func main() {

    const a = 2

    fmt.Println(a) // output is 2

}

scope 详情请见:https://golang.org/ref/spec#Declarations_and_scope


查看完整回答
反对 回复 2023-03-21
  • 2 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

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