1 回答

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
映射索引操作的一兩個(gè)值分配是一種特殊形式,為方便起見,不幸的是,它不能在“正?!狈峙渲型瓿伞?/p>
普通賦值表達(dá)式:
該規(guī)范對(duì)元組分配有以下說法:
元組賦值將多值運(yùn)算的各個(gè)元素分配給變量列表。有兩種形式。首先,右手操作數(shù)是單個(gè)多值表達(dá)式,例如函數(shù)調(diào)用、通道或映射操作或類型斷言。左側(cè)操作數(shù)的數(shù)量必須與值的數(shù)量相匹配。例如,如果 f 是一個(gè)返回兩個(gè)值的函數(shù),
x, y = f()
將第一個(gè)值分配給 x,將第二個(gè)值分配給 y。第二種形式,左邊的操作數(shù)的個(gè)數(shù)必須等于右邊的表達(dá)式的個(gè)數(shù),每個(gè)表達(dá)式都必須是單值的,右邊的第n個(gè)表達(dá)式賦值給左邊的第n個(gè)操作數(shù):
one, two, three = '一', '二', '三'
這不會(huì)為分配中值的數(shù)量留下任何歧義的余地。
一值或二值表達(dá)式:
有 4 種情況,表達(dá)式左側(cè)同時(shí)允許一個(gè)值和兩個(gè)值。其中三個(gè)是賦值表達(dá)式的特殊形式,最后一個(gè)是range子句。
索引表達(dá)式:
索引表達(dá)式被定義為 的形式a[x],地圖除外:
在特殊形式的賦值或初始化中使用的 map [K]V 類型的映射 a 上的索引表達(dá)式
v, ok = a[x]
v, ok := a[x]
var v, ok = a[x]
產(chǎn)生一個(gè)額外的無類型布爾值。
接收運(yùn)營商:
接收操作符也會(huì)發(fā)生同樣的情況,通常格式為x <-ch:
在特殊形式的賦值或初始化中使用的接收表達(dá)式
x, ok = <-ch
x, ok := <-ch
var x, ok = <-ch
var x, ok T = <-ch
產(chǎn)生一個(gè)額外的無類型布爾結(jié)果,報(bào)告通信是否成功。
類型斷言:
再一次提到類型斷言中的特殊形式,通常是這樣的形式:x.(T)
在特殊形式的賦值或初始化中使用的類型斷言
v, ok = x.(T)
v, ok := x.(T)
var v, ok = x.(T)
var v, ok T1 = x.(T)
產(chǎn)生一個(gè)額外的無類型布爾值。
范圍子句:
帶有 range 子句的for 語句具有與之相關(guān)的更寬松的語言,因?yàn)樗皇菍?duì)正常賦值表達(dá)式的修改:
左側(cè)的函數(shù)調(diào)用在每次迭代時(shí)評(píng)估一次。對(duì)于每次迭代,如果存在相應(yīng)的迭代變量,則按如下方式生成迭代值:
Range expression 1st value 2nd value
array or slice a [n]E, *[n]E, or []E index i int a[i] E
string s string type index i int see below rune
map m map[K]V key k K m[k] V
channel c chan E, <-chan E element e E
非賦值的用途:
如上所述,所有三種特殊形式僅用于作業(yè)。嘗試在其他表達(dá)式(函數(shù)調(diào)用、返回等)中使用多值返回將失敗,因?yàn)檫@些不是賦值并且不會(huì)從特殊形式中受益。
- 1 回答
- 0 關(guān)注
- 137 瀏覽
添加回答
舉報(bào)