Golang的Interface是什么
1 回答

墨色風雨
TA貢獻1853條經驗 獲得超6個贊
Golang的interface,和別的語言是不同的。它不需要顯式的implements,只要某個struct實現了interface里的所有函數,編譯器會自動認為它實現了這個interface。
SICP里詳細解釋了為什么同一個接口,需要根據不同的數據類型,有不同的實現;以及如何做到這一點。在這里沒有OO的概念,先把OO放到一邊,從原理上看一下這是怎么做到的。
先把大概原理放在這里,然后再舉例子。為了實現多態,需要維護一張全局的查找表,它的功能是根據類型名和方法名,返回對應的函數入口。當我增加了一種類型,需要把新類型的名字、相應的方法名和實際函數入口添加到表里。這基本上就是所謂的動態綁定了,類似于C++里的vtable。對于SICP中使用的lisp語言來說,這些工作需要手動完成。而對于java,則通過implements完成了這項工作。而golang則用了更加激進的方式,連implements都省了,編譯器自動發現自動綁定。
- 1 回答
- 0 關注
- 779 瀏覽
添加回答
舉報
0/150
提交
取消