日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

golang学习笔记:Interface类型断言详情

發布時間:2024/9/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang学习笔记:Interface类型断言详情 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接:https://www.2cto.com/kf/201712/703563.html

1. 用于判斷變量類型

demo如下:

  switch t := var.(type){case string://add your operationscase int8://add your operationscase int16://add your operationsdefault:return errors.New("no this type")} }//空接口包含所有的類型,輸入的參數均會被轉換為空接口 //變量類型會被保存在t中

2. 判斷某個接口類型是否實現了特定接口

為實現這一目標,代碼如下:

if t, ok := something.(I) ; ok { // 對于某些實現了接口I的 // t是其所擁有的類型 }

如果已經確定了something實現了接口I,可以直接寫出下面的代碼:

//在確定了something實現了接口I的情況下 //t時something所擁有的類型 //這說明ok t := something.(I)

當然,也可以封裝在一個函數中:

func IsImplement(interface {}) bool{_, ok := something.(I);return ok }

注意

something必須為接口(Interface)類型,才可以使用類型斷言。假如是其他類型,使用類型斷言時,需要轉換,最好的方法是定義函數,封裝類型斷言方法。

分別運行以下代碼,看看未實現特定接口的類型使用斷言會發生什么:
demo1.go

type I interface{Get() intPut(int) }//定義結構體,實現接口I type S struct {i int } func (p *S) Get() int {return p.i } func (p *S) Put(v int ) {p.i = v }//使用類型斷言 func GetInt( some interface {}) int {return some.(I).Get() }func main(){var some = &S{i:5}fmt.Println(GetInt(some)) }

demo2.go

type I interface{Get() intPut(int) }//定義結構體,實現接口I type S struct {i int } func (p *S) Get() int {return p.i } func (p *S) Put(v int ) {p.i = v }//使用類型斷言 func GetInt( some interface {}) int {return some.(I).Get() }func main(){var i int = 5fmt.Println(GetInt(i)) }

?

轉載于:https://www.cnblogs.com/wangjq19920210/p/11557049.html

總結

以上是生活随笔為你收集整理的golang学习笔记:Interface类型断言详情的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。