一:由於介面是基本型別,不知道具體型別,如果要轉成具體型別需要使用型別斷言
package mainimport (
"fmt"
)type dy struct
func main()
var dy dy = dy
i1 = dy
var i2 dy
//dy(i1)會報錯
//型別斷言才能把介面轉為具體型別
i2 = i1.(dy)
fmt.println(i2)}結果
[ `go run duanyan.go` | done ]
二:斷言的使用細節
①:斷言會放回兩個資料,如果只賦值給乙個引數,預設返回斷言後的結果,如果賦值給兩個,第二個為bool值
package mainimport (
"fmt"
)type dy struct
func main()
var dy dy = dy
i1 = dy
i2, ok := i1.(dy)
fmt.println(ok)
fmt.println(i2)}結果
[ `go run duanyan.go` | done ]
true
GO語言使用之型別斷言
型別斷言,由於介面是一般型別,不知道具體型別,如果要轉成具體型別,就需要使用型別斷言 型別斷言 func typeassertion x t ok 待檢測的型別斷言 y res x.float32 if res else y1 res1 x.int32 轉成float if res1 else 1 ...
GO 物件導向 多型之型別斷言
在物件導向 多型這一節最後沒有進行型別斷言,也就是型別判斷。那麼在這篇文章中就簡單的介紹一下 在進行型別斷言會有倆種方式 switch是使用型別來判斷 也就是s.type if判斷是把指標跟定義的值判斷 package main import fmt 定義工人介面 type worker1 inte...
Go型別斷言
package main import fmt 型別斷言 type assertion 是乙個使用在介面值上的操作,用於檢查介面型別變數所持有的值是否實現了期望的介面或者具體的型別。如何進行型別斷言的判斷?1.使用if語句或者switch語句 2.依靠 value,ok x.t x 表示乙個介面的型...