午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > golang中的空接口使用詳解

golang中的空接口使用詳解

熱門標簽:宿遷便宜外呼系統代理商 寧波語音外呼系統公司 鄭州智能語音電銷機器人價格 不封卡外呼系統 仙桃400電話辦理 上海極信防封電銷卡價格 重慶慶云企業400電話到哪申請 湛江crm外呼系統排名 地圖標注免費定制店

1、空接口

Golang 中的接口可以不定義任何方法,沒有定義任何方法的接口就是空接口。空接口表示,沒有任何約束,因此任何類型變量都可以實現空接口。空接口在實際項目中用的是非常多的,用空接口可以表示任意數據類型

func main() {
// 定義一個空接口 x, x 變量可以接收任意的數據類型
var x interface{}
s := "你好 golang"
x = s
fmt.Printf("type:%T value:%v\n", x, x)
i := 100
x = i
fmt.Printf("type:%T value:%v\n", x, x)
b := true
x = b
fmt

1 、空接口作為函數的參數: 使用空接口實現可以接收任意類型的函數參數

// 空接口作為函數參數
func show(a interface{}) {
fmt.Printf("type:%T value:%v\n", a, a)
}

2 、map 的值 實現空接口: 使用空接口實現可以保存任意值的字典

// 空接口作為 map 值
var studentInfo = make(map[string]interface{})
studentInfo["name"] = "張三"
studentInfo["age"] = 18
studentInfo["married"] = false
fmt.Println(studentInfo

3 、切片實現空接口

var slice = []interface{}{"張三", 20, true, 32.2}
fmt.Println(slice)

2、類型斷言

一個接口的值(簡稱接口值)是由一個具體類型和具體類型的值兩部分組成的。這兩部分分

別稱為接口的動態類型和動態值。

如果我們想要判斷空接口中值的類型,那么這個時候就可以使用類型斷言,其語法格式:x.(T)

其中:

• x : 表示類型為 interface{}的變量

• T : 表示斷言 x 可能是的類型。

該語法返回兩個參數,第一個參數是 x 轉化為 T 類型后的變量,第二個值是一個布爾值,若

為 true 則表示斷言成功,為 false 則表示斷言失敗

例如:

func main() {
var x interface{}
x = "Hello golnag"
v, ok := x.(string)
if ok {
fmt.Println(v)
} else {
fmt.Println("類型斷言失敗")
}
}

上面的示例中如果要斷言多次就需要寫多個 if 判斷,這個時候我們可以使用 switch 語句來

實現:

注意:類型.(type)只能結合 switch 語句使用

func justifyType(x interface{}) {
switch v := x.(type) {
case string:
fmt.Printf("x is a string,value is %v\n", v)
case int:
fmt.Printf("x is a int is %v\n", v)
case bool:
fmt.Printf("x is a bool is %v\n", v)
default:
fmt.Println("unsupport type!")
}
}

因為空接口可以存儲任意類型值的特點,所以空接口在 Go 語言中的使用十分廣泛。

關于接口需要注意的是: :只有當有兩個或兩個以上的具體類型必須以相同的方式進行處理時

才需要定義接口。不要為了接口而寫接口,那樣只會增加不必要的抽象,導致不必要的運行

時損耗。

3、結構體值接收者和指針接收者實現接口的區別

值接收者:

如果結構體中的方法是值接收者,那么實例化后的結構體值類型和結構體指針類型都可以賦

值給接口變量

package main
import "fmt"
type Usb interface {
Start()
Stop()
}
type Phone struct {
Name string
}
func (p Phone) Start() {
fmt.Println(p.Name, "開始工作")
}
func (p Phone) Stop() {
fmt.Println("phone 停止")
}
func main() {
phone1 := Phone{
Name: "小米手機",
}
var p1 Usb = phone1 //phone1 實現了 Usb 接口 phone1 是 Phone 類型
p1.Start() //小米手機 開始工作
phone2 := Phone{
Name: "蘋果手機",
}
var p2 Usb = phone2 //phone2 實現了 Usb 接口 phone2 是 *Phone 類型
p2.Start() //蘋果手機 開始工作
}

指針接收者:

如果結構體中的方法是指針接收者,那么實例化后結構體指針類型都可以賦值給接口變量,

結構體值類型沒法賦值給接口變量

package main
import "fmt"
type Usb interface {
Start()
Stop()
}
type Phone struct {
Name string
}
func (p *Phone) Start() {
fmt.Println(p.Name, "開始工作")
}
func (p *Phone) Stop() {
fmt.Println("phone 停止")
}
func main() {
/*
錯誤寫法
phone1 := Phone{
Name: "小米手機",
}
var p1 Usb = phone1
p1.Start()
*/
//正確寫法
phone2 := Phone{
Name: "蘋果手機",
}
var p2 Usb = phone2 //phone2 實現了 Usb 接口 phone2 是 *Phone 類型
p2.Start() //蘋果手機 開始工作
}

4、一個結構體實現多個接口

Golang 中一個結構體也可以實現多個接口

package main
import "fmt"
type AInterface interface {
GetInfo() string
}
type BInterface interface {
SetInfo(string, int)
}
type People struct {
Name string
Age int
}
func (p People) GetInfo() string {
return fmt.Sprintf("姓名:%v 年齡:%d", p.Name, p.Age)
}
func (p *People) SetInfo(name string, age int) {
p.Name = name
p.Age = age
}
func main() {
var people = People{
Name: "張三",
Age: 20,
}
// people 實現了 AInterface 和 BInterface
var p1 AInterface = people
var p2 BInterface = people
fmt.Println(p1.GetInfo())
p2.SetInfo("李四", 30)
fmt.Println(p1.GetInfo())
}

5、接口嵌套

接口與接口間可以通過嵌套創造出新的接口

package main
import "fmt"
type SayInterface interface {
say()
}
type MoveInterface interface {
move()
}
// 接口嵌套
type Animal interface {
SayInterface
MoveInterface
}
type Cat struct {
name string
}
func (c Cat) say() {
fmt.Println("喵喵喵")
}
func (c Cat) move() {
fmt.Println("貓會動")
}
func main() {
var x Animal
x = Cat{name: "花花"}
x.move()
x.say()
}

6、Golang中空接口和類型斷言使用細節

使用空接口定義一個map類型的數據,其數據中是切片或者結構體,其通過索引拿到對應切片內容的值,出現錯誤,必須通過類型斷言的形式拿到對應的數據,結構體同理,案例如下:

package main

import "fmt"

type Address struct {
 Name string
 Phone int
}

// Golang中空接口和類型斷言使用細節
func main() {

 var userinfo = make(map[string]interface{})
 userinfo["username"] = "張三"
 userinfo["age"] = 20
 userinfo["hobby"] = []string{"睡覺", "吃飯"}

 fmt.Println(userinfo["age"])
 fmt.Println(userinfo["hobby"])

 // fmt.Println(userinfo["hobby"][1]) //interface {} does not support indexing

 var address = Address{
 Name: "李四",
 Phone: 1521242141,
 }
 fmt.Println(address.Name) //李四

 userinfo["address"] = address

 fmt.Println(userinfo["address"]) //{李四 1521242141}

 // var name = userinfo["address"].Name //type interface {} is interface with no methods
 // fmt.Println(name)

 hobby2, _ := userinfo["hobby"].([]string)

 fmt.Println(hobby2[1]) //吃飯

 address2, _ := userinfo["address"].(Address)
 fmt.Println(address2.Name, address2.Phone) //李四 1521242141

}

到此這篇關于golang中的空接口使用的文章就介紹到這了,更多相關golang空接口使用內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 淺談Golang 嵌套 interface 的賦值問題
  • 如何判斷Golang接口是否實現的操作
  • golang接口IP限流,IP黑名單,IP白名單的實例
  • Golang 使用接口實現泛型的方法示例
  • golang分層測試之http接口測試入門教程
  • golang基礎之Interface接口的使用
  • golang 接口嵌套實現復用的操作

標簽:海南 物業服務 西雙版納 電子產品 青海 遼寧 安康 儋州

巨人網絡通訊聲明:本文標題《golang中的空接口使用詳解》,本文關鍵詞  golang,中的,空,接口,使用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang中的空接口使用詳解》相關的同類信息!
  • 本頁收集關于golang中的空接口使用詳解的相關信息資訊供網民參考!
  • 推薦文章
    国产一级片免费观看| 在线成人小视频| 国产精品国产高清国产| 深夜福利网站在线观看| 中文字幕亚洲在线| 欧美激情一区二区三区不卡| 免费在线不卡av| 精品一区在线播放| 亚洲永久免费av| 99久久精品国产精品久久| 无码人妻一区二区三区一| 国产精品免费一区二区三区四区| 亚洲成**性毛茸茸| 精品一区二区三区人妻| 91蝌蚪视频在线| 天堂精品视频| 99久久99久久| 中文字幕国内精品| 青青草一区二区三区| 男人添女人荫蒂国产| 国产丝袜不卡| 午夜不卡av免费| 性生活三级视频| 亚洲伦理在线观看| 蜜臀av午夜精品久久| 日b视频免费观看| 国产小视频91| 国产精品一区免费在线观看| 国产又粗又猛又爽又黄视频| 日本精品人妻无码77777| 成人性生交大片免费看无遮挡aⅴ| 国产真人无码作爱视频免费| 国产日韩在线看| 国产日产欧美一区| 欧美男人天堂网| 亚洲精品乱码久久| 日韩精品久久久久久福利| 久久精品国产亚洲一区二区三区| 欧美aaaaaa午夜精品| 91久久久久久久久久久久| а天堂中文在线资源| 99精品999| 91豆麻精品91久久久久久| 中文字幕免费在线观看视频| 中文字幕免费在线看线人动作大片| 国产理论在线播放| 亚洲综合首页| 国产一区二区三区精品久久久 | 久久这里只有精品18| 日本伊人色综合网| 懂色av蜜臀av粉嫩av永久| 日本爱爱免费视频| 亚洲欧美中文字幕| 欧美成人video| 一区二区三区在线播| 久久综合色婷婷| 加勒比av一区二区| 91好色先生tv| 少妇黄色一级片| 91在线视频导航| 91精品国产成人| 国产精品538一区二区在线| 国产精品一区无码| 做爰无遮挡三级| 亚洲观看黄色网| 亚洲天堂av一区二区三区| 别急慢慢来1978如如2| 亚洲美女性视频| 日韩欧美国产成人一区二区| 在线精品播放av| 国产伦精品一区二区三区精品视频| 少妇高潮大叫好爽喷水| 免费在线激情视频| 亚洲精品电影院| 国产91av视频| 国产一级伦理片| 成人av电影天堂| 97**国产露脸精品国产| 日本精品免费一区二区三区| 欧美日韩一卡二卡三卡| www亚洲一区| 色就色 综合激情| 欧美亚洲国产bt| 中文字幕欧美激情| xnxx国产精品| 亚洲午夜18毛片在线看| 成人毛片在线播放| 日韩精品一区二区亚洲av| www.av亚洲| 欧美va亚洲va国产综合| 99视频在线免费观看| 99爱视频在线| 一本在线免费视频| 波多野结衣一区二区三区在线 | 国产在线日韩欧美| 91片黄在线观看喷潮| 免费一级特黄3大片视频| 免费观看av网站| www.av在线.com| 波多野结衣电车痴汉| 日韩久久久久久久久| 国产精久久久久久| 人妻内射一区二区在线视频 | 韩国成人精品a∨在线观看| 亚洲线精品一区二区三区| 亚洲乱码av中文一区二区| 欧美日韩亚洲一区二区三区四区| www国产免费| 国产淫片av片久久久久久| 日韩伦理在线免费观看| 亚洲欧美手机在线| 欧美成人aaa片一区国产精品| 星空大象在线观看免费播放| 男人添女人荫蒂国产| 国产又粗又猛又爽又黄| 国产成人免费视频网站高清观看视频 | 综合久久国产| 国产有色视频色综合| 欧美日韩在线视频一区二区| 国产乱子伦视频一区二区三区| 李宗瑞91在线正在播放| 国产免费高清一区| 欧美精品免费看| 亚洲一区二区av在线| 国产一区二区不卡| 校园春色 亚洲| 日本久久久久久久久久久久| 日韩欧美亚洲区| 国产国产精品人在线视| 日韩欧美美女一区二区三区| 成人avav影音| 亚洲 欧美 中文字幕| 中文人妻一区二区三区| av不卡在线免费观看| 国产女精品视频网站免费| 日韩欧美综合一区| 国产农村妇女精品| 国内一区二区视频| 一级片在线免费观看视频| 国产精品无码永久免费不卡| 国产一级爱c视频| 国产亚洲欧美一区二区| 538国产精品一区二区在线 | 青青草华人在线视频| 国产日韩欧美精品在线观看| 伊人久久大香线蕉av一区| 日韩美女主播视频| 日韩精品在线免费观看| 色综合天天视频在线观看| 国产精品激情偷乱一区二区∴| 精品一区二区三区久久| 国产av一区二区三区精品| 久久久久久国产精品视频| 国产精品国产三级国产传播| 欧美日韩一区二区区别是什么 | 久久久久久久毛片| 国产一级做a爰片久久| 国产精品一区二区三区在线| 1769国产精品| 国产成人精品久久二区二区| 欧美激情一区二区三区成人| 精品亚洲一区二区三区四区五区| 欧美日韩精品一区二区三区| 偷偷要91色婷婷| 久久亚洲一区二区三区四区| 成人国产精品免费观看动漫| 久久精品99国产精品日本| 天堂中文在线看| 日本在线不卡视频一二三区| 九一九一国产精品| 亚洲午夜国产一区99re久久| av电影在线观看不卡| 最新欧美日韩亚洲| 国产精品亚洲片夜色在线| 999在线观看免费大全电视剧| 日韩av电影手机在线| 国产精品老女人精品视频| 欧美激情综合色| 91嫩草国产在线观看| 国模精品娜娜一二三区| 中文精品一区二区三区| 亚洲图片都市激情| 亚洲精品激情视频| 国产大学生视频| 欧美激情日韩图片| 久久成人精品视频| 九色精品免费永久在线| 国产精品美女网站| 91精品黄色| 中文字幕av久久| 小早川怜子一区二区三区| 国产一线在线观看| 日韩熟女一区二区| 国内精品久久久久久久久久| 波多野结衣一区二区在线 | 色婷婷免费视频| 糖心vlog精品一区二区| 91久久久久国产一区二区| www久久久com| 精品亚洲成av人在线观看| 国产亚洲成年网址在线观看| 欧美性生活一区| 亚洲激情视频在线播放| 国产精品你懂得| 男的插女的下面视频| 快灬快灬一下爽蜜桃在线观看| 亚洲 欧美 日韩 在线| 日本一二区免费| 91精品又粗又猛又爽| 欧美卡一卡二卡三| 青青草国产成人99久久| 亚洲国产精品久久久男人的天堂| 亚洲欧洲国产精品| 国产97在线亚洲| av免费在线播放网站| 欧美做受高潮6| 日韩激情一区二区| 亚洲欧洲精品一区二区精品久久久 | 五月天婷婷亚洲| 91精品国产91久久久久久吃药| 蜜桃传媒视频麻豆一区| 丰满岳乱妇一区二区 | 欧洲精品中文字幕| 久久大大胆人体| 91免费版看片| 免费在线不卡视频| 国产亚洲1区2区3区| 国产精品亚洲美女av网站| 成人久久久久久久| 久在线观看视频| 99久久久无码国产精品免费蜜柚 | www.国产免费| 亚洲va欧美va天堂v国产综合| 久久九九全国免费精品观看| 97av视频在线观看| 国产无码精品久久久| 成人黄色在线看| 精品亚洲国产视频| 国产日韩中文在线| 波多野结衣乳巨码无在线| 天堂网视频在线| 夜夜嗨av一区二区三区| 国产精品日韩一区二区| 伊人久久99| 久久黄色一级视频| 日韩电影在线观看电影| 日韩欧美国产综合一区| 日韩免费电影一区二区| 自拍偷拍欧美亚洲| 欧美视频免费在线| 亚洲精品日韩av| 亚洲天堂网av在线| 亚洲精品一二三| 日本久久久久久久| 国产特黄级aaaaa片免| 久久精品国内一区二区三区| 综合网日日天干夜夜久久| 国产精品亚洲二区在线观看 | 国产精品久久久久久久午夜 | 日韩一区二区欧美| 性欧美大战久久久久久久| 五月天婷婷导航| 欧美高清视频一二三区| 免费观看中文字幕| 天天操天天干天天爽| 日韩在线观看免费网站| 日本三区在线观看| 国产精品一色哟哟哟| 欧美一级淫片播放口| 亚洲天堂2024| 亚洲图片激情小说| 女人一区二区三区| 亚洲第一天堂影院| 亚洲级视频在线观看免费1级| 久久久久久久久久久久久国产精品| 久久国产综合精品| 国产国语刺激对白av不卡| 久久国产精品国语对白| 日本大香伊一区二区三区| 久久精品二区| 婷婷久久久久久| 久久久久久久999| 麻豆一区二区三区精品视频| 日韩视频永久免费| 麻豆av免费看| 亚洲成人av一区| 97国产在线播放| 久久久精品免费免费| 精品久久久久久中文字幕动漫| 久久久精品毛片| 亚洲女成人图区| 美女被到爽高潮视频| 夜夜嗨av一区二区三区网页| www国产无套内射com| 日本三级亚洲精品| 91久久精品在线| 伊人久久久久久久久久久久| 欧美一卡二卡三卡四卡| av五月天在线| 亚洲三级免费观看| 国产 国语对白 露脸| 久久久不卡网国产精品一区| 精品国产中文字幕| 三级不卡在线观看| 日产日韩在线亚洲欧美| 97国产成人无码精品久久久| 97超级碰碰人国产在线观看| 波多野结衣电车痴汉| 国产一区二区欧美日韩| 欧美日韩成人免费观看| 精品国产一区二区三区av性色| 国产美女在线一区| 国产盗摄视频一区二区三区| 国产中文字幕日韩| 日韩精品电影在线| 国产在线拍揄自揄视频不卡99| 午夜老司机福利| 欧洲精品在线视频| 波多野结衣视频在线观看| 亚洲欧美激情另类校园| 日韩成人毛片视频| www.国产精品一二区| 伊人手机在线视频| 欧美片一区二区三区| 亚洲三区在线播放| 亚洲高清资源综合久久精品| 精品一区二区影视| 亚洲综合中文字幕在线观看| 国产综合色产在线精品| 中文字幕在线亚洲精品| 成人精品一区二区三区中文字幕| 国产一级片91| 亚洲精品国产成人久久av盗摄| 在线观看免费不卡av| 欧美精品一区二区三区视频| 奇米网一区二区| 久久久久久91| 日韩精品电影在线观看| 欧美日韩国产不卡在线看| 中文字幕制服丝袜一区二区三区| aa视频在线播放| 欧美午夜精品伦理| 久久久久黄色片| 久久久久久国产免费| 蜜臀精品一区二区三区在线观看| 狠狠噜天天噜日日噜| 午夜精品123| 一出一进一爽一粗一大视频| 久久视频中文字幕| 全部av―极品视觉盛宴亚洲| 热99这里只有精品| 亚洲第一福利网站| 日本精品入口免费视频| 久久综合入口| 欧美伊人久久久久久久久影院| 99热在线观看免费精品| 国产精品久久久久久久久久三级| 日韩不卡手机在线v区| 国产v亚洲v天堂无码久久久 | 国产精品每日更新在线播放网址| 国产精品久久久久久久99| 日韩中文字幕网址| 久久精品久久精品| 欧美性大战久久久久xxx| 亚洲人成电影在线| 久久中文在线| 亚洲天堂av一区二区| 精品国产一区二区三区久久久狼| 亚洲av无码国产精品永久一区| 久久av高潮av| 尤物tv国产一区| 99精品欧美一区二区三区小说 | 亚洲经典一区二区| 国内精品在线观看视频| 亚洲午夜精品久久久久久性色 | 日韩av手机在线| 国产午夜精品久久久久久免费视| 欧美激情 一区| 成人黄色av网站| 色域天天综合网| 久久久蜜桃一区二区| av电影一区二区三区| 日韩精品中文字幕一区 | 日本久久一级片| 国产 日韩 欧美在线| 久久在线视频在线| 国产精品污www在线观看| 成年人视频在线免费看| av在线播放天堂| 中文字幕亚洲综合| 国产精品久久二区二区| 亚洲视频久久久| 中文字幕第66页| 国产精品成人一区二区三区吃奶| 黑人精品xxx一区| 久久国产直播| ass极品国模人体欣赏| 亚洲欧洲三级| 18一19gay欧美视频网站| 色噜噜狠狠色综合欧洲selulu| 日本不卡视频在线观看| 久久精品综合视频| 亚洲巨乳在线观看| 久操成人在线视频| 在线一区二区视频| 青青草成人在线观看| 美日韩一二三区| 在线免费视频a| 免费av一区二区三区| 久久精品中文字幕电影|