1 回答

TA貢獻1836條經驗 獲得超4個贊
您使用該UniversalError()方法,但沒有將其添加到接口“定義”中,因此請執行以下操作:
type UniversalError interface {
CommonError1
UniversalError()
}
而你想Error3成為一個UniversalError. 要Error3成為UniversalError,它必須實現其所有方法:UniversalError()和CommonError1()。所以你必須添加這兩個方法:
func (Error3) CommonError1() {}
func (Error3) UniversalError() {}
通過這些更改,輸出將是(在Go Playground上嘗試):
**** Types *****
Error belongs to an unidentified type
Error belongs to an unidentified type
CommonError1 found, but Does not belong to Error1 or Error2
提示:如果您希望編譯時保證某些具體類型實現某些接口,請使用空白變量聲明,如下所示:
var _ UniversalError = Error3{}
上面的聲明將 的值賦給Error3類型為 的變量UniversalError。不應該Error3滿足UniversalError,您會收到編譯時錯誤。上面的聲明不會引入新變量,因為使用了空白標識符,這只是編譯時檢查。
如果您要刪除該Error3.CommonError1()方法:
//func (Error3) CommonError1() {}
func (Error3) UniversalError() {}
然后你會立即得到一個編譯時錯誤:
./prog.go:49:5: cannot use Error3 literal (type Error3) as type UniversalError in assignment:
Error3 does not implement UniversalError (missing CommonError1 method)
- 1 回答
- 0 關注
- 174 瀏覽
添加回答
舉報