1 回答

TA貢獻1780條經(jīng)驗 獲得超5個贊
您可以將其分解如下,charmap.All是Encoding接口的一部分,可以使用range
循環(huán)進行迭代。
相等是因為Charmap類型實現(xiàn)了接口,即每個charmap 類型將定義一個NewDecoder()
和一個NewEncoder()
方法實現(xiàn)。根據(jù)語言規(guī)范,如果結(jié)構(gòu)實現(xiàn)了接口,它們可以進行比較(參見比較運算符)
當類型 X 的值可比較且 X 實現(xiàn) T 時,非接口類型 X 的值 x 和接口類型 T 的值 t 是可比較的。如果 t 的動態(tài)類型與 X 相同且 t 的動態(tài)值等于 x,則它們相等
通過上面的推論,我們可以理解func(*Charmap)String是Charmap
str
for _, enc := range charmap.All {
cmap, ok := enc.(*charmap.Charmap)
if ok && cmap.String() == encoder {
// encode based on user's input
}
}
uct類型上的方法,而不是接口上的方法。因此,正確的方法是鍵入斷言您的接口值,然后調(diào)用相同的字符串函數(shù)。
- 1 回答
- 0 關(guān)注
- 145 瀏覽
添加回答
舉報