如果你看看在File
結構它有一個Read()
和Write()
功能是完全一樣io.Writer
和io.Reader
接口Read()
和Write()
功能。但包io
沒有在File
包中找到(未導入)。這是否意味着接口根本不需要導入才能使用?只要Read()
的定義與接口相同,那麼它就可以暗示它是接口的一部分,也就是io.Writer
或io.Reader
接口的一部分。Golang接口不需要導入?
2
A
回答
10
包作爲io.Reader
接口不包os
使用os
不會導入包io
。
*File
類型碰巧執行io.Reader
,因爲它有一個帶有正確簽名的Read
方法。這實現的關係是隱含的並且既不需要也不可能使這個明確(例如像在Java中使用implements ISomeThing
)。
您問:「這是否意味着接口根本不需要導入才能使用?」正式答案是:當然不是!如果你想使用io.Reader
你必須import "io"
。
但執行/滿足的接口是不一個採用此接口的:任何類型實現任何接口單單是正確的方法(甚至還沒有被髮明噴氣將來的)。
1
導出的實體是常量,變量和類型。要使用它們,即。要引用這些導出的實體,必須使用[限定]名稱,而限定符是導出它們的包的基本名稱。這也意味着使用這種包裝的進口聲明。 IOW,將文件範圍內的導出實體綁定爲[嚴格] 顯式。沒有導入==沒有訪問導出的東西。
OTOH,實現一個接口是specified是隱:
甲類型實現,其包括它的方法的任意子集的任何接口,因此可以實現幾個不同的接口。例如,所有類型都實現了空接口:
interface{}
相關問題
- 1. 爲什麼Golang需要接口?
- 2. Golang接口和接收器 - 需要的建議
- 3. Golang加入陣列接口
- 4. Golang:不能輸入非接口值
- 5. golang:在接口
- 6. Golang包導入
- 7. Golang接口結構
- 8. Golang接口投嵌入式結構
- 9. 的IntelliJ自動導入的東西我不需要進口
- 10. 接口需要不同的簽名
- 11. 導入JPA接口
- 12. 我需要使用接口
- 13. tkinter接口需要幫助
- 14. 接口其他接口繼承golang
- 15. Golang導入問題
- 16. 爲什麼我不需要導入sys?
- 17. 不再需要快速導入語句
- 18. 播放音頻文件不需要導入/需要
- 19. 需要要寫自己的HttpClient接口
- 20. Golang - 結構與接口JSON
- 21. 接口命名約定Golang
- 22. 轉換接口{}在Golang
- 23. 轉儲的接口在golang
- 24. Golang接口的好處
- 25. golang deepEqual接口{}到整數
- 26. Golang xml.Unmarshal接口類型
- 27. 轉換接口{}爲[]在Golang
- 28. Golang:如何在接口
- 29. 不能導入導出接口 - 出口未發現
- 30. 從接口獲取接口字段值而無需在Golang聲明結構