亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言編譯器自動檢測類型是否實現接口

發布時間:2021-10-14 16:46:06 來源:億速云 閱讀:157 作者:柒染 欄目:編程語言

本篇文章為大家展示了Go語言編譯器自動檢測類型是否實現接口,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

編譯器自動檢測類型是否實現接口

  經常看到一些開源庫里會有一些類似下面這種奇怪的用法:

  這時候會有點懵,不知道作者想要干什么,實際上這就是此問題的答案。編譯器會由此檢查*myWriter類型是否實現了io.Writer接口。

  實際上,上述賦值語句會發生隱式地類型轉換,在轉換的過程中,編譯器會檢測等號右邊的類型是否實現了等號左邊接口所規定的函數。

接口的構造過程是怎樣的

  我們已經看過了iface和eface的源碼,知道iface最重要的是itab和_type。

  為了研究清楚接口是如何構造的,接下來我會拿起匯編的武器,還原背后的真相。

  把每個字段的大小相加,itab結構體的大小就是40字節。上面那一串數字實際上是itab序列化后的內容,注意到大部分數字是0,從24字節開始的4個字節da9f20d4實際上是itab的hash值,這在判斷兩個類型是否相同的時候會用到。

  下面兩行是鏈接指令,簡單說就是將所有源文件綜合起來,給每個符號賦予一個全局的位置值。這里的意思也比較明確:前8個字節最終存儲的是type."".Person的地址,對應itab里的inter字段,表示接口類型;8-16字節最終存儲的是type."".Student的地址,對應itab里_type字段,表示具體類型。

  第二個參數就比較簡單了,它就是數字18的地址,這也是初始化Student結構體的時候會用到。

  在main函數里,先構造出一個接口對象qcrao,然后強制類型轉換,最后讀取出hash值,非常妙!你也可以自己動手試一下。

上述內容就是Go語言編譯器自動檢測類型是否實現接口,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

崇礼县| 威海市| 宜兰县| 西乌珠穆沁旗| 新邵县| 兴业县| 崇阳县| 金华市| 法库县| 阿克陶县| 阿城市| 秀山| 东源县| 桃园县| 华容县| 顺平县| 吴忠市| 抚松县| 隆昌县| 天气| 南安市| 富宁县| 平山县| 岳西县| 长宁县| 台江县| 呼伦贝尔市| 贵港市| 嘉禾县| 新野县| 余姚市| 桐乡市| 深水埗区| 松潘县| 车致| 凉城县| 日土县| 丹阳市| 疏勒县| 厦门市| 布尔津县|