2 回答

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
Go 程序是通過(guò)將包鏈接在一起構(gòu)建的。一個(gè)包又是由一個(gè)或多個(gè)源文件構(gòu)成的,這些源文件一起聲明屬于該包的常量、類型、變量和函數(shù),并且可以在同一包的所有文件中訪問(wèn)。這些元素可以導(dǎo)出并在另一個(gè)包中使用。
每個(gè)源文件都包含一個(gè) package 子句,定義它所屬的包,然后是一組可能為空的導(dǎo)入聲明,這些聲明聲明它希望使用其內(nèi)容的包,然后是一組可能為空的函數(shù)、類型、變量聲明,和常量。
屬于包的 [constants] 可以在同一包的所有文件中訪問(wèn)。
Go 的基本編譯單元是包。包中的源文件被合并以形成編譯器的輸入。

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
回答你的問(wèn)題:不可能有兩個(gè)具有相同名稱的常量,在相同的范圍內(nèi),在不同的文件中的相同包中。
Go 中沒(méi)有命名空間或文件范圍。
但是,在同一個(gè)包中可以有兩個(gè)同名的常量,但在不同的范圍內(nèi)聲明:
package main
import (
"fmt"
)
const a = 1
func main() {
const a = 2
fmt.Println(a) // output is 2
}
scope 詳情請(qǐng)見(jiàn):https://golang.org/ref/spec#Declarations_and_scope
- 2 回答
- 0 關(guān)注
- 132 瀏覽
添加回答
舉報(bào)