對於Go而言,我還是個新手,我很驚訝無法使用嵌入式接口的子類型。 這裏是一個小例子來說明我的意思:嵌入式接口
func test(sl bufio.ReadWriter){
// cannot use sl(type bufio.ReadWriter) as type bufio.Reader in function argument
readStuff(sl)
[...]
writeStuff(sl) // same kind of error
}
func readStuff(sl bufio.Reader){
[...]
}
由於每個接口具有相同的內存佈局和ReadWriter是一個讀者和作家,我期待此代碼工作。 我曾嘗試接口類型轉換有:
readStuff(sl.(buffio.Reader))
但它也不起作用。所以我有兩個問題:
- 它爲什麼不起作用?
- 這個問題的理念是什麼?
謝謝!它與readStuff(* sl.Reader) – user1612346
一起工作我會有第二個問題:如果我的所有參數都是切片而不是單個參數會怎麼樣。有沒有什麼優雅的方式將一片ReadWriter轉換爲一片Reader? – user1612346
我認爲你會發現最優雅的解決方案是創建一個新的切片並通過for循環進行填充。 – Daniel