Go 型別斷言的實踐案例(含型別推斷函式實現)

2021-10-07 18:39:54 字數 1261 閱讀 5252

package main

import (

"fmt"

)//宣告/定義乙個介面

type usb inte***ce

type phone struct

//讓phone 實現 usb介面的方法

func (p phone) start()

func (p phone) stop()

func (p phone) call()

type camera struct

//讓camera 實現 usb介面的方法

func (c camera) start()

func (c camera) stop()

type computer struct

func (computer computer) working(usb usb)

usb.stop()

}func main()

usbarr[1] = phone

usbarr[2] = camera

//遍歷usbarr

//phone還有乙個特有的方法call(),請遍歷usb陣列,如果是phone變數,

//除了呼叫usb 介面宣告的方法外,還需要呼叫phone 特有方法 call. =》型別斷言

)//定義student型別

type student struct

//編寫乙個函式,可以判斷輸入的引數是什麼型別

Go型別斷言

package main import fmt 型別斷言 type assertion 是乙個使用在介面值上的操作,用於檢查介面型別變數所持有的值是否實現了期望的介面或者具體的型別。如何進行型別斷言的判斷?1.使用if語句或者switch語句 2.依靠 value,ok x.t x 表示乙個介面的型...

Go之型別斷言

一 由於介面是基本型別,不知道具體型別,如果要轉成具體型別需要使用型別斷言 package main import fmt type dy struct func main var dy dy dy i1 dy var i2 dy dy i1 會報錯 型別斷言才能把介面轉為具體型別 i2 i1.dy...

go 型別斷言 (57)介面的型別斷言

go提供了乙個方法,用來判斷介面的底層值是什麼型別 型別斷言提供了訪問介面值底層具體值的方式。t i.t 該語句斷言介面值i儲存了具體型別t,並將其底層型別為t的值賦予變數t。若i並未儲存t型別的值,該語句就會觸發乙個panic。為了判斷乙個介面值是否儲存了乙個特定的型別,型別斷言可返回兩個值 其底...