我收到一個指向我的函數的接口的指針,我正在嘗試對其進行迭代。底層類型是一個字符串切片,如果我使用的是類型interface{}而不是指向它的指針,我可以將其轉換為它*interface{}輸入斷言指向接口的指針的最佳方法是什么?使用指針是因為要轉換的值很大。不起作用的代碼:func convertMember(member *interface{}) { for _, members := range member.([]string) {invalid type assertion: member.([]string) (non-interface type *interface {} on left)不適用于解引用指針的代碼:func convertMember(member *interface{}) { for _, members := range *member.([]string) {invalid type assertion: member.([]string) (non-interface type *interface {} on left)如果我更改父函數以發送接口而不是其指針,則代碼有效:func convertMember(member interface{}) { for _, members := range member.([]string) {或者我應該輸入 assert 到 string slice 并使用指向它的指針?
1 回答

PIPIONE
TA貢獻1829條經驗 獲得超9個贊
您需要在斷言之前取消引用:
func convertMember(member *interface{}) {
for _, members := range (*member).([]string) { ... }
}
但是為什么你想要一個指向接口的指針呢?當結構實現某個接口時,該結構的指針也實現了該接口。所以指向接口的指針是一種永遠不需要的。
- 1 回答
- 0 關注
- 157 瀏覽
添加回答
舉報
0/150
提交
取消