第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Go 中的哪些語義規(guī)則決定何時(shí)發(fā)生單值賦值與何時(shí)發(fā)生二值賦值?

Go 中的哪些語義規(guī)則決定何時(shí)發(fā)生單值賦值與何時(shí)發(fā)生二值賦值?

Go
長風(fēng)秋雁 2022-06-27 10:12:05
map在學(xué)習(xí)A Tour of Go: Mutating Maps時(shí),我發(fā)現(xiàn)令人驚訝的一件事是,我們可以使用單值賦值或雙值賦值來訪問映射中鍵的值。示例代碼:package mainimport (    "fmt")func main() {    m := map[int]int{2: 4, 3: 9, 4: 16}        // Example 1    fmt.Println(m[2])        // Example 2    v := m[2]    fmt.Println(v)        // Example 3    v, ok := m[2]    fmt.Println(v, ok)}輸出:444 true使用相同語法同時(shí)支持單值和雙值賦值涉及哪些語義規(guī)則?Go 中是否還有其他這種特殊形式,根據(jù)賦值運(yùn)算符的左側(cè),以相同的語法同時(shí)支持單值和雙值賦值?此外,我可以自己編寫一個(gè)函數(shù)foo(),根據(jù)賦值運(yùn)算符的左側(cè)返回一個(gè)值或兩個(gè)值嗎?
查看完整描述

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ì)從特殊形式中受益。


查看完整回答
反對(duì) 回復(fù) 2022-06-27
  • 1 回答
  • 0 關(guān)注
  • 137 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)