為什么這不是類型不匹配?來(lái)自:https : //golang.org/ref/spec#Assignability在以下任何一種情況下,值 x 可分配給 T 類型的變量(“x 可分配給 T”): ...剪掉 ... x 的類型 V 和 T 具有相同的基礎(chǔ)類型,并且至少有 V 或 T 之一不是命名類型。...剪...那是因?yàn)?N[] 的基礎(chǔ)類型是 N[] 而不是命名類型嗎?其背后的原理是什么?package mainimport "fmt"type N []Nfunc main() { n := make([]N, 1) fmt.Printf("%T\n", n) fmt.Printf("%T\n", n[0]) n[0] = n //fmt.Println(n)}*Output:*[]main.Nmain.N
1 回答

GCT1015
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
你問(wèn)是否n[0] = n
有效。您已正確識(shí)別語(yǔ)言規(guī)范中的規(guī)則:
在以下任何一種情況下,值
x
都可分配給類型為T
(“x
可分配給T
”)的變量:
...
x
的類型V
并T
具有相同的基礎(chǔ)類型,并且至少有一個(gè)V
或T
不是命名類型。
以下是它的適用方式:
n[0]
具有類型N
和基礎(chǔ)類型[]N
(來(lái)自語(yǔ)言規(guī)范:“N
在其類型聲明中引用的類型”)。n
具有類型[]N
(具有相同的基礎(chǔ)類型)。
因此n[0]
和n
具有相同的底層類型 ( []N
),并且 的類型n
不是命名類型。
- 1 回答
- 0 關(guān)注
- 160 瀏覽
添加回答
舉報(bào)
0/150
提交
取消