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

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

明確導出標識符的定義

明確導出標識符的定義

Go
胡說叔叔 2022-07-11 15:10:55
Go 規范將標識符定義為導出的基本原理是什么如果兩者:標識符名稱的第一個字符是 Unicode 大寫字母(Unicode 類“Lu”);和標識符在包塊中聲明,或者它是字段名或方法名。"第 1 項對我來說很清楚。但是第 2 項的預期含義是什么。 ?據我了解,每個標識符都必須在包塊中聲明,因為 Go 不提供其他地方來聲明標識符。我也不明白為什么這句話似乎區分標識符和字段名和方法名。字段名稱和方法名稱不是標識符的示例嗎?換個方式問:我是否錯誤地認為:除了在包塊中聲明外,沒有其他方法可以存在標識符(請注意,包塊包含所有包代碼)字段名和方法名是標識符標識符只能在包塊中聲明沒有在包塊之外聲明標識符
查看完整描述

2 回答

?
明月笑刀無情

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

標識符包括結構字段名稱和方法名稱。

結構類型部分所述:

字段名稱可以顯式指定 (IdentifierList) 或隱式指定 (EmbeddedField)

在以下結構中:

type s struct {
  A int
  b int
  }

A被導出,因為它是一個字段名稱并以大寫字符開頭。b不是,因為它是一個字段名,但不以大寫字符開頭。

方法名稱也是如此(例如:(_ s) DoA()vs (_ s) doB())。

混淆源于您認為標識符僅位于包塊級別的事實:它們不是。


查看完整回答
反對 回復 2022-07-11
?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

1. 除了在包塊中聲明之外,沒有其他方法可以使標識符存在

確實如此。您缺少的一件事是標識符的范圍:

在函數內聲明的常量或變量標識符的范圍從 ConstSpec 或 VarSpec(短變量聲明的 ShortVarDecl)的末尾開始,到最里面的包含塊的末尾結束

這意味著在功能塊內聲明的標識符在此功能之外將不可用。

2.字段名和方法名是標識符

真的。正如您在規范中看到的,MethodName只是 的別名identifier,與字段名稱相同。

3. 標識符只能在包塊中聲明

我相信這是通過回答第一個問題來解決的。

4. 不能在包塊外聲明標識符

在Universe 塊中聲明了預先聲明的標識符。但是您不能在代碼中的包塊之外聲明標識符。


查看完整回答
反對 回復 2022-07-11
  • 2 回答
  • 0 關注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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