亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

切片數組文字

切片數組文字

Go
慕無忌1623718 2022-05-18 09:34:20
我相信 Go 規范存在一個小問題。以下抱怨數組文字不可尋址:    print([4]int{2,3}[:2])我知道為什么從函數返回的數組是不可尋址的(例如錯誤尋址函數的返回切片),但為什么數組字面量像[4]int{2,3}不可尋址?特別是當切片和字符串文字是 - 例如這些工作正常:    print([]int{2,3,0,0}[:2])    print("2300"[:2])此外,數組文字似乎是可尋址的,因為&[4]int{42,43}它是一個有效的表達式。我知道我可以用一片    print([]int{2,3,0,0}[:2])但是,如果我希望容量(數組長度)成為編譯時常量怎么辦。    const maxLength = 4    ...    print([maxLength]int{2,3}[:2])是的,我可以分配給一個臨時數組變量,但我為什么需要呢?
查看完整描述

1 回答

?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

使用以下內容:

fmt.Println((&[4]int{2, 3})[:2])

規范說明了切片表達式

如果切片操作數是一個數組,它必須是可尋址的。

這與可尋址性有關

操作數必須是可尋址的,即變量、指針間接或切片索引操作;或可尋址結構操作數的字段選擇器;或可尋址數組的數組索引操作。作為可尋址性要求的一個例外,x 也可以是(可能帶括號的)復合文字。

該數組是不可尋址的,但復合文字異??捎糜讷@取可尋址值。

數組操作數必須是可尋址的,因為結果切片的元素是可尋址的。字符串操作數不需要是可尋址的,因為字符串元素永遠不可尋址。


查看完整回答
反對 回復 2022-05-18
  • 1 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號