2015-03-31 40 views
-3

我想聲明一個常量golang 2d數組(不是片),但我無法弄清楚,看過其他golang對這個問題的評論。Golang常量2d數組語法失敗

type fooT [1][1]float64 
const BAR fooT = {[1]float64 {.01}} 

給出錯誤fubar.go:5: syntax error: unexpected {。但以下罰款編譯:

type fooT [1][1]float64 
var BAR = fooT {[1]float64 {.01}} 

首先,我不明白爲什麼我要重新聲明冗餘底層的數組,它似乎golang編譯器知道的類型,因爲它如果我改變它給出了一個錯誤。但是,爲什麼我不能讓這個數組是一個常量?它是R/O,不是全球性的。

而且,語法很麻煩。

+2

關於二維語法:'var foo = [2] [2] int {{1,2},{3,4}}' – thwd 2015-03-31 09:48:30

+0

首選答案沒有洞察力。下一個答案指出編譯器錯誤:它是一個無效的const,但並不表示不允許數組常量的目的,這在必要時顯得非常明顯。這不是編譯器錯誤:它是一個無效的語法錯誤,不是無效的常量。既不回答爲什麼糟糕的編譯器語法,爲什麼數組不能爲常量的問題。這些並不是令人滿意的答案,IMO。 – user3431262 2015-03-31 10:21:30

回答

2

specs

Constants

There are boolean constants, rune constants, integer constants, floating-point constants, complex constants, and string constants.

IOW,在Go沒有{結構,數組,切片,地圖,接口,指針}常數存在。