GO 物件導向 多型之型別斷言

2021-10-04 02:15:23 字數 1547 閱讀 1640

在物件導向:多型這一節最後沒有進行型別斷言,也就是型別判斷。那麼在這篇文章中就簡單的介紹一下

在進行型別斷言會有倆種方式

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 物件導向 五) 多型

介面 只有方法的定義,沒有實現 全部是抽象方法 實現介面 結構體實現介面的全部抽象方法,稱為結構體實現了介面 多型 乙個父類 介面有不同的子類實現,本例中 勞動者介面 的具體實現有 程式設計師 產品經理 老闆 共性 程式設計師 產品經理 老闆 都會勞動和休息 個性 程式設計師 產品經理 老闆 的勞動...