在物件導向:多型這一節最後沒有進行型別斷言,也就是型別判斷。那麼在這篇文章中就簡單的介紹一下
在進行型別斷言會有倆種方式
switch是使用型別來判斷 也就是s.(type)
if判斷是把指標跟定義的值判斷
package main
import
("fmt"
)// 定義工人介面
type worker1 inte***ce
// 定義碼農
type coder1 struct
func
(coder *coder1)
work1
(hour int
)(chanpin string
)func
(coder *coder1)
rest1()
// 定義產品經理
type productmanager1 struct
func
(p *productmanager1)
work1
(hour int
)(chanpin string
)func
(p *productmanager1)
rest1()
// 定義boos
type boos1 struct
func
(boos *boos1)
work1
(hour int
)(chanpin string
)func
(boos *boos1)
rest1()
func
main()
) workers =
(workers,
&productmanager1
) workers =
(workers,
&boos1
)// 建立乙個種子
//r := rand.new(rand.newsource(time.now().unixnano()))
// 建立乙個隨機數代表星期幾
//weekday := r.intn(7)
// 型別斷言方式一
/** 休息是什麼???
任何指標都不屬於
無休息*/for
_, s :=
range workers
}// 型別斷言方式二
/** 如果是:ok為true,coder1ptr有值
如果不是:ok為false,coder1ptr為nil
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語言使用之型別斷言
型別斷言,由於介面是一般型別,不知道具體型別,如果要轉成具體型別,就需要使用型別斷言 型別斷言 func typeassertion x t ok 待檢測的型別斷言 y res x.float32 if res else y1 res1 x.int32 轉成float if res1 else 1 ...
Go 物件導向 五) 多型
介面 只有方法的定義,沒有實現 全部是抽象方法 實現介面 結構體實現介面的全部抽象方法,稱為結構體實現了介面 多型 乙個父類 介面有不同的子類實現,本例中 勞動者介面 的具體實現有 程式設計師 產品經理 老闆 共性 程式設計師 產品經理 老闆 都會勞動和休息 個性 程式設計師 產品經理 老闆 的勞動...