91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

城口县| 凤庆县| 湘西| 师宗县| 罗源县| 洞头县| 香港| 建始县| 东宁县| 鹤庆县| 潞城市| 衡东县| 十堰市| 五华县| 潞西市| 佛教| 佛学| 金寨县| 鸡东县| 达拉特旗| 田林县| 渭源县| 天全县| 石嘴山市| 永兴县| 宿迁市| 黎平县| 从化市| 涿鹿县| 金阳县| 吴江市| 桂平市| 克什克腾旗| 连州市| 乌恰县| 仙游县| 南阳市| 武山县| 北安市| 枣阳市| 兴宁市|