婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Go 語言中關(guān)于接口的三個

Go 語言中關(guān)于接口的三個

熱門標(biāo)簽:賺地圖標(biāo)注的錢犯法嗎 智能電銷機(jī)器人營銷 廣東語音外呼系統(tǒng)供應(yīng)商 濮陽自動外呼系統(tǒng)代理 澳門防封電銷卡 烏魯木齊人工電銷機(jī)器人系統(tǒng) 地圖標(biāo)注測試 長沙ai機(jī)器人電銷 福州鐵通自動外呼系統(tǒng)

我的在線博客:http://golang.iswbm.com
我的 Github:github.com/iswbm/GolangCodingTime 

1. 對方法的調(diào)用限制

接口是一組固定的方法集,由于靜態(tài)類型的限制,接口變量有時僅能調(diào)用其中特定的一些方法。

請看下面這段代碼

package main

import "fmt"

type Phone interface {
 call()
}

type iPhone struct {
 name string
}

func (phone iPhone)call() {
 fmt.Println("Hello, iPhone.")
}

func (phone iPhone)send_wechat() {
 fmt.Println("Hello, Wechat.")
}

func main() {
 var phone Phone
 phone = iPhone{name:"ming's iphone"}
 phone.call()
 phone.send_wechat()
}

我定義了一個 Phone 的接口,只要求實(shí)現(xiàn) call 方法即可,也就是只要能打電話的設(shè)備就是一個電話(好像是一句沒用的廢話)。

然后再定義了一個 iPhone 的結(jié)構(gòu)體,該結(jié)構(gòu)體接收兩個方法,一個是打電話( call 函數(shù)),一個是發(fā)微信(send_wechat 函數(shù))。

最后一步是關(guān)鍵,我們定義了一個 Phone 接口類型的 phone 對象,該對象的內(nèi)容是 iPhone 結(jié)構(gòu)體。然后我們調(diào)用該對象的 call 方法,一切正常。

但是當(dāng)你調(diào)用 phone.send_wechat 方法,程序會報錯,提示我們 Phone 類型的方法沒有 send_wechat 的字段或方法。

# command-line-arguments
./demo.go:30:10: phone.send_wechat undefined (type Phone has no field or method send_wechat)

原因也很明顯,因?yàn)槲覀兊膒hone對象顯示聲明為 Phone 接口類型,因此 phone調(diào)用的方法會受到此接口的限制。

那么如何讓 phone 可以調(diào)用 send_wechat 方法呢?

答案是可以不顯示的聲明為 Phone接口類型 ,但要清楚 phone 對象實(shí)際上是隱式的實(shí)現(xiàn)了 Phone 接口,如此一來,方法的調(diào)用就不會受到接口類型的約束。

修改 main 方法成如下

func main() {
 phone := iPhone{name:"ming's iphone"}
 phone.call()
 phone.send_wechat()
}

運(yùn)行后,一切正常,沒有報錯。

Hello, iPhone.
Hello, Wechat.

2. 調(diào)用函數(shù)時的隱式轉(zhuǎn)換

Go 語言中的函數(shù)調(diào)用都是值傳遞的,變量會在方法調(diào)用前進(jìn)行類型轉(zhuǎn)換。

比如下面這段代碼

import (
 "fmt"
)

func printType(i interface{}) {

 switch i.(type) {
 case int:
 fmt.Println("參數(shù)的類型是 int")
 case string:
 fmt.Println("參數(shù)的類型是 string")
 }
}

func main() {
 a := 10
 printType(a)
}

如果你運(yùn)行后,會發(fā)現(xiàn)一切都很正常

參數(shù)的類型是 int

但是如果你把函數(shù)內(nèi)的內(nèi)容搬到到外面來

package main

import "fmt"


func main() {
 a := 10

 switch a.(type) {
 case int:
 fmt.Println("參數(shù)的類型是 int")
 case string:
 fmt.Println("參數(shù)的類型是 string")
 }
}

就會有意想不到的結(jié)果,居然報錯了。

# command-line-arguments
./demo.go:9:5: cannot type switch on non-interface value a (type int)

這個操作會讓一個新人摸不著頭腦,代碼邏輯都是一樣的,為什么一個不會報錯,一個會報錯呢?

原因其實(shí)很簡單。

當(dāng)一個函數(shù)接口 interface{} 空接口類型時,我們說它可以接收什么任意類型的參數(shù)(江湖上稱之為無招勝有招)。

當(dāng)你使用這種寫法時,Go 會默默地為我們做一件事,就是把傳入函數(shù)的參數(shù)值(注意:Go 語言中的函數(shù)調(diào)用都是值傳遞的)的類型隱式的轉(zhuǎn)換成 interface{} 類型。

如何進(jìn)行接口類型的顯示轉(zhuǎn)換

上面了解了函數(shù)中 接口類型的隱式轉(zhuǎn)換后,你的心里可能開始有了疑問了,難道我使用類型斷言,只能通過一個接收空接口類型的函數(shù)才能實(shí)現(xiàn)嗎?

答案當(dāng)然是 No.

如果你想手動對其進(jìn)行類型轉(zhuǎn)換,可以像下面這樣子,就可以將變量 a 的靜態(tài)類型轉(zhuǎn)換為 interface{} 類型然后賦值給 b (此時 a 的靜態(tài)類型還是 int,而 b 的靜態(tài)類型為 interface{})

var a int = 25
b := interface{}(a)

知道了方法后,將代碼修改成如下:

package main

import "fmt"


func main() {
 a := 10

 switch interface{}(a).(type) {
 case int:
 fmt.Println("參數(shù)的類型是 int")
 case string:
 fmt.Println("參數(shù)的類型是 string")
 }
}

運(yùn)行后,一切正常。

參數(shù)的類型是 int

3. 類型斷言中的隱式轉(zhuǎn)換

上面我們知道了,只有靜態(tài)類型為接口類型的對象才可以進(jìn)行類型斷言。

而當(dāng)類型斷言完成后,會返回一個靜態(tài)類型為你斷言的類型的對象,也就是說,當(dāng)我們使用了類型斷言,Go 實(shí)際上又會默認(rèn)為我們進(jìn)行了一次隱式的類型轉(zhuǎn)換。

驗(yàn)證方法也很簡單,使用完一次類型斷言后,對返回的對象再一次使用類型斷言,Goland 立馬就會提示我們新對象 b 不是一個接口類型的對象,不允許進(jìn)行類型斷言。

總結(jié)

到此這篇關(guān)于Go 語言中關(guān)于接口的三個"潛規(guī)則"的文章就介紹到這了,更多相關(guān)go語言接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 如何判斷Golang接口是否實(shí)現(xiàn)的操作
  • golang接口IP限流,IP黑名單,IP白名單的實(shí)例
  • GO語言gin框架實(shí)現(xiàn)管理員認(rèn)證登陸接口
  • Go語言使用swagger生成接口文檔的方法
  • go語言實(shí)現(xiàn)接口查詢

標(biāo)簽:德州 貴陽 調(diào)研邀請 慶陽 西雙版納 阿克蘇 廣西 太原

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Go 語言中關(guān)于接口的三個》,本文關(guān)鍵詞  語,言中,關(guān)于,接口,的,三個,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Go 語言中關(guān)于接口的三個》相關(guān)的同類信息!
  • 本頁收集關(guān)于Go 語言中關(guān)于接口的三個的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲在线观看免费| 久久国产精品免费| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲一本大道在线| 日本欧美久久久久免费播放网| 麻豆国产一区二区| 欧美在线|欧美| 久久精品人人做| 日韩av高清在线观看| 91丝袜美女网| 久久久久99精品国产片| 日韩精品电影一区亚洲| 日韩高清不卡一区二区| av午夜一区麻豆| 亚洲手机成人高清视频| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲夂夂婷婷色拍ww47| 国产精品一区二区黑丝| 国产成人在线影院| 日韩一区二区在线免费观看| 亚洲精品水蜜桃| av在线一区二区三区| 国产亚洲欧洲一区高清在线观看| 国内欧美视频一区二区| 国产日韩欧美在线一区| 亚洲自拍另类综合| 69p69国产精品| 日本免费新一区视频| 欧美揉bbbbb揉bbbbb| 亚洲在线一区二区三区| 欧美电视剧免费观看| 色老头久久综合| 国产91对白在线观看九色| 免费看日韩a级影片| 国产精品乱码人人做人人爱| 欧美一级午夜免费电影| 91搞黄在线观看| 成人av网站在线观看免费| 久久国产精品第一页| 日韩综合在线视频| 日韩黄色免费电影| 日本sm残虐另类| 亚洲成a人在线观看| 亚洲第一搞黄网站| 国内久久精品视频| thepron国产精品| 国产欧美日韩激情| 亚洲欧洲一区二区在线播放| 亚洲同性gay激情无套| 亚洲色图丝袜美腿| 亚洲一区二区三区免费视频| 亚洲国产精品自拍| 久久精品理论片| 色哟哟日韩精品| 欧美丰满美乳xxx高潮www| 精品国产一区二区三区四区四| 久久久精品欧美丰满| 国产网站一区二区| 久久99国产精品麻豆| 国产99久久久国产精品潘金| 欧美日韩一区二区三区在线看| 日韩一区二区不卡| 有坂深雪av一区二区精品| 国产精品夜夜嗨| 7777精品伊人久久久大香线蕉 | 六月丁香婷婷色狠狠久久| 国产91丝袜在线观看| 欧美成人一区二区三区片免费| 日韩伦理av电影| 91一区在线观看| 久久夜色精品国产欧美乱极品| 亚洲欧美aⅴ...| 久久99精品国产.久久久久| 欧美艳星brazzers| 国产精品久久久久影视| 成人一级片网址| 精品国产乱码久久| 国产美女精品在线| 欧美一区日韩一区| 狠狠色丁香婷综合久久| 欧美精品tushy高清| 日韩电影在线免费看| 欧美一区二区三区男人的天堂| 亚洲mv在线观看| 欧美精品一区在线观看| 国产精品亚洲午夜一区二区三区 | 久久免费电影网| 99久久综合狠狠综合久久| 国产精品情趣视频| 日本国产一区二区| 精品一区二区三区在线观看| 2017欧美狠狠色| 欧美无砖专区一中文字| 激情综合一区二区三区| 亚洲丝袜另类动漫二区| 精品国产一区二区三区av性色| 高清日韩电视剧大全免费| 一区二区三区中文在线| 欧美电影免费提供在线观看| 国产精品自拍网站| 亚洲午夜日本在线观看| 中文字幕精品一区二区精品绿巨人| 99re这里只有精品首页| 国产精品中文有码| 久草中文综合在线| 奇米精品一区二区三区在线观看 | 色久综合一二码| 亚洲精品在线免费播放| 国产乱妇无码大片在线观看| 亚洲免费色视频| 奇米色777欧美一区二区| 91麻豆精品国产91久久久久久 | 久久精品人人做人人爽人人| 国产在线国偷精品免费看| 久久精品男人天堂av| 欧美综合欧美视频| 久久99精品一区二区三区| 国产精品理论在线观看| 久久久精品天堂| 91麻豆精品国产无毒不卡在线观看| 国产在线视频一区二区三区| 一区二区三区欧美| 亚洲福利电影网| 国产精品成人免费在线| 精品国产区一区| 2014亚洲片线观看视频免费| 精品三级在线观看| 在线不卡a资源高清| 日韩一区二区在线观看视频 | 国产亚洲欧美中文| 久久久三级国产网站| 久久综合精品国产一区二区三区 | 日本不卡视频在线观看| 亚洲va在线va天堂| 青青草视频一区| 国产v综合v亚洲欧| 色综合av在线| 日韩一区二区三区电影| 国产精品久久久久久久久免费丝袜| 亚洲美女区一区| 国内成人自拍视频| 欧美日韩国产首页| 精品国产在天天线2019| 亚洲精品乱码久久久久久| 日本欧美一区二区| 精品一区二区三区在线播放| 国产在线看一区| 欧美男男青年gay1069videost | 国产精一区二区三区| 成人一区在线看| 久久综合色综合88| 性做久久久久久久久| 99久久99久久综合| 宅男噜噜噜66一区二区66| 亚洲黄色av一区| 成人a免费在线看| 国产午夜精品一区二区三区四区| 五月天激情综合| 波多野结衣精品在线| 国产亚洲精品中文字幕| 亚洲观看高清完整版在线观看 | 亚洲小少妇裸体bbw| 91在线视频免费观看| 中文字幕免费不卡在线| 日韩高清一级片| 精品91自产拍在线观看一区| 亚洲成人午夜电影| 成人激情av网| 日韩一区二区在线免费观看| 国产日本一区二区| 99九九99九九九视频精品| 久久精品夜色噜噜亚洲aⅴ| 国产精品综合二区| 中文字幕av一区二区三区| 欧美日韩一区二区三区免费看| 美女一区二区视频| 亚洲最大成人综合| 国产欧美中文在线| 开心九九激情九九欧美日韩精美视频电影| 欧美精品 日韩| 成人av综合一区| 精品成人免费观看| 欧洲一区二区av| 六月丁香综合在线视频| 日韩欧美在线1卡| 国产乱码字幕精品高清av| 亚洲高清免费视频| 亚洲视频 欧洲视频| 亚洲国产岛国毛片在线| 日韩一卡二卡三卡国产欧美| 色偷偷成人一区二区三区91| 视频在线观看一区| 有码一区二区三区| 欧美在线观看一二区| 成人爱爱电影网址| 亚洲一区二区三区四区不卡| 欧美激情综合五月色丁香| 色国产精品一区在线观看| 成人在线综合网| 日韩高清在线不卡|