2 回答

TA貢獻1828條經(jīng)驗 獲得超4個贊
標(biāo)識符包括結(jié)構(gòu)字段名稱和方法名稱。
如結(jié)構(gòu)類型部分所述:
字段名稱可以顯式指定 (IdentifierList) 或隱式指定 (EmbeddedField)
在以下結(jié)構(gòu)中:
type s struct { A int b int }
A
被導(dǎo)出,因為它是一個字段名稱并以大寫字符開頭。b
不是,因為它是一個字段名,但不以大寫字符開頭。
方法名稱也是如此(例如:(_ s) DoA()
vs (_ s) doB()
)。
混淆源于您認(rèn)為標(biāo)識符僅位于包塊級別的事實:它們不是。

TA貢獻1836條經(jīng)驗 獲得超13個贊
1. 除了在包塊中聲明之外,沒有其他方法可以使標(biāo)識符存在
確實如此。您缺少的一件事是標(biāo)識符的范圍:
在函數(shù)內(nèi)聲明的常量或變量標(biāo)識符的范圍從 ConstSpec 或 VarSpec(短變量聲明的 ShortVarDecl)的末尾開始,到最里面的包含塊的末尾結(jié)束
這意味著在功能塊內(nèi)聲明的標(biāo)識符在此功能之外將不可用。
2.字段名和方法名是標(biāo)識符
真的。正如您在規(guī)范中看到的,MethodName
只是 的別名identifier
,與字段名稱相同。
3. 標(biāo)識符只能在包塊中聲明
我相信這是通過回答第一個問題來解決的。
4. 不能在包塊外聲明標(biāo)識符
在Universe 塊中聲明了預(yù)先聲明的標(biāo)識符。但是您不能在代碼中的包塊之外聲明標(biāo)識符。
- 2 回答
- 0 關(guān)注
- 201 瀏覽
添加回答
舉報