在Go 中傳遞相容介面的切片
在Go 中,將一個介面的切片傳遞給需要一個介面的切片的函數時可能會遇到困難不同的接口,即使前者包含後者。為了說明這個問題,考慮兩個介面 A 和 B,其中 A 包含 B。
`
type A 介面{
Close() error Read(b []byte) (int, error)
}
type B interface {
Read(b []byte) (int, error)
}
`
`
return 10, nil
return nil
`
`
具體來說,Impl struct 實作了兩個介面:
fmt.Println("in single")
type Impl struct {}
func (I Impl) Read(b []byte) (int, error ) {
fmt.Println("in slice")
}
func (I Impl) Close() error {
雖然
`
雖然
`
雖然單一項目可以毫無問題地跨函數傳遞,但傳遞切片會遇到錯誤:
`
newSlice[i] = v
}
func slice( r []io.Reader) {
以上是Go中如何傳遞相容介面的切片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!