也許我並不完全熟悉仿製藥的力量,但空接口interface{}
與普通仿真器有什麼不同,特別是如果我們有能力使用反射或類型開關?人們總是提到Go沒有泛型,但是interface{}
看起來好像和Java的<T>
這類工作非常相似。空白接口與普通接口有什麼不同?
3
A
回答
6
如果您來自Java,那麼空接口(interface{}
)實際上更接近於使用Java中的Object
變量而不是泛型。
您可以將任何內容分配給interface{}
(就像您可以使用Java中的Object
變量一樣)。
但是,如果您想使用您存儲在那裏的實際類型(與在Java中使用Object
變量相同),則應該「返回」或「鍵入斷言」。
Java中的泛型非常不同,因爲它們允許您在編譯時進行類型檢查。不同之處在於,如果您使用泛型,則無需採用反射或類型切換。
你可以在這裏閱讀更多關於Java泛型:
https://docs.oracle.com/javase/tutorial/java/generics/
然後按照這一點,接下來的2個或3個步驟轉到巡演這裏更多的空接口是如何工作的:
相關問題
- 1. 抽象類與設計點的接口有什麼不同?
- 2. 接口C(或C++)與Python有什麼不同的選項?
- 3. 接口與接口
- 4. 接口有什麼意義?
- 5. 爲什麼[WCF]有接口
- 6. 接口,具有相同的接口
- 7. 轉換爲普通接口動態
- 8. 是什麼接口
- 9. 什麼是接口
- 10. 什麼是接口?
- 11. 有一些我不明白的接口
- 12. 什麼是CLI/C++?它與'普通'C++有什麼不同?
- 13. 所有這些OpenCV Python接口有什麼不同?
- 14. 空與標記接口
- 15. 接口實現與空體
- 16. 我不明白爲什麼我的「Comparable」接口不工作
- 17. 爲什麼使用Spring DAO類而不是普通方法進行接口?
- 18. 爲什麼WCF類需要接口繼承,但普通類不是?
- 19. 爲什麼不建議在SQLite的C接口接口sqlite3_get_table
- 20. 通用接口,通用接口與泛型
- 21. 什麼是RPC端口,它與連接Hadoop有什麼關係?
- 22. C#中的抽象類和接口類有什麼不同?
- 23. 接口與泛型參數VS接口與通用方法
- 24. 與javascript同步http接口
- 25. Рroblem與通用接口
- 26. NInject與通用接口
- 27. 通用接口與多態
- 28. 不同類型的通用接口
- 29. 通過不同的JVM接口實現
- 30. 如何實現具有子通用接口的通用接口
那麼在Go中,它在運行時檢查而不是編譯時間的主要區別是什麼? – ollien
是的。由於Go沒有「泛型」功能,因此可以使用interface {}並進行運行時檢查(與Java開發人員在將泛型編譯爲語言之前一樣)。請注意,Go中的集合(切片,地圖)是鍵入的,因此對泛型的需求不是那麼重要,因爲集合是您需要此功能的最顯眼的地方。 – eugenioy
那麼,人們還可以通過簡單地調用函數來檢查接口是否在編譯時執行 - 請參閱https://stackoverflow.com/a/44692363/2969090 – Ravi