2 回答

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
運(yùn)行時(shí)使用的每個(gè)值都必須具有類型。如果使用非類型化常量,它將轉(zhuǎn)換為類型化值,如以下示例所示:
fmt.Printf("%T %v", 1, 1)
1
是一個(gè)非類型化常量,但當(dāng)傳遞給 時(shí),它必須轉(zhuǎn)換為類型化值。在上面的示例中,將使用其默認(rèn)類型,即 ,因此上面的示例打印 。fmt.Printf()
int
int 1
非類型化的常量索引被指定為類型
int
這意味著,如果對(duì)非類型化索引使用常量值(它沒有類型),則在將常量轉(zhuǎn)換為類型化值時(shí)將使用常量值。int
例如:
s := []int{1, 2, 3} fmt.Println(s[1])
此處,非類型化常量用作索引,因此它將被轉(zhuǎn)換/用作 。1
int
一個(gè)反例:
fmt.Println(s[int32(1)])
此處使用類型化值 進(jìn)行索引。這是有效的,因?yàn)樗钦麛?shù)類型。s
int32(1)
int32
該規(guī)則只是說,如果您使用非類型化常量,那么它將被指定為類型,而不是例如。int
int32
這在使用整數(shù)文本時(shí)似乎很明顯,但在使用其他類型的文本(如符文文本)時(shí)則不然。
以下內(nèi)容也有效:
fmt.Println(s['\x00'])
上面的示例使用符文文本作為索引,該索引也是一個(gè)非類型化常量,但它具有不同的默認(rèn)類型。符文文本的默認(rèn)類型是 的別名。引用的索引規(guī)則指出,在這種情況下,索引將是類型而不是 。'\x00'
rune
int32
int
int32
- 2 回答
- 0 關(guān)注
- 94 瀏覽
添加回答
舉報(bào)