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

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

Go 無法推斷賦值中的類型:“:= 左側的非名稱”

Go 無法推斷賦值中的類型:“:= 左側的非名稱”

Go
翻閱古今 2021-07-16 22:15:53
此代碼段按預期工作play.golang.org/p/VuCl-OKMavi := 10next := 11prev, i := i, next然而,這個幾乎相同的片段給出了non-name f.Bar on left side of := play.golang.org/p/J8NNWPugQGtype Foo struct {    Bar int}f := Foo{10}next := 11prev, f.Bar := f.Bar, next停止類型推斷的結構有什么特別之處?這是一個錯誤嗎?
查看完整描述

3 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

這是一個開放的問題。

問題 6842:規范:使用短聲明符號分配給字段


查看完整回答
反對 回復 2021-07-19
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

這不是真正的類型推斷問題,只是左側:=必須是標識符列表,而f.Bar不是標識符,因此不能聲明——即使:=是稍微寬松的規則也不行它可以聲明什么。請參閱Go 編程語言規范“短變量聲明”


查看完整回答
反對 回復 2021-07-19
?
森欄

TA貢獻1810條經驗 獲得超5個贊

從規范的短變量聲明部分:


與常規變量聲明不同,短變量聲明可以重新聲明變量,前提是它們最初在同一塊中較早地聲明......具有相同的類型,并且至少有一個非空變量是新的。


因此,如果您在另一種類型(示例中的 struct Foo)中聲明變量,則“假設它們最初是在同一塊中較早地聲明的”將取消其資格。


所以答案是只將預先聲明的變量設置為等于不使用 := 語法的值:


...

var prev int

prev, f.Bar = f.Bar, next

...


查看完整回答
反對 回復 2021-07-19
  • 3 回答
  • 0 關注
  • 397 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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