GoLang學習筆記(三十六)介面物件的轉型

2021-09-26 10:52:32 字數 1134 閱讀 5202

介面物件轉型

方式一:

instance,ok:=介面物件.(實際型別)

如果該介面物件是對應的實際型別,那麼instance就是轉型之後物件,ok的值為true

配合if...else if...使用

方式二:

介面物件.(type)

配合switch...case語句使用

type shape inte***ce 

type rectangle struct

type ******** struct

type circular struct

func (r rectangle) perimeter() float64

func (r rectangle) area() float64

func (t ********) perimeter() float64

func (t ********) area() float64

func (c circular) perimeter() float64

func (c circular) area() float64

func gettype(s shape) else if i,ok := s.(********); ok else if i,ok := s.(circular); ok

}func getresult(s shape)

func transinte***ce1()

gettype(s)

getresult(s)

s = ********

gettype(s)

getresult(s)

s = circular

gettype(s)

getresult(s)

}

上面的例子使用的是方式一,如果要使用方式2,可以將gettype()函式改為:

func gettype(s shape) 

}

ps:上面求三角形面積使用了海**式求三角形的面積,公式為:

三角形的面積=平方根[三角形周長的一半×(三角形周長的一半減去第乙個邊)×(三角形周長的一半減去第二個邊)×(三角形周長的一半減去第三個邊)]

opencv學習筆記(三十六)距離變換

距離變換cvdisttransform 距離變換於1966年被學者首次提出,目前已被廣泛應用於影象分析 計算機視覺 模式識別等領域,人們利用它來實現目標細化 骨架提取 形狀插值及匹配 粘連物體的分離等。距離變換是針對二值影象的一種變換。在二維空間中,一幅二值影象可以認為僅僅包含目標和背景兩種畫素,目...

C 學習筆記 三十六 命名空間

在 c 應用程式中。例如,您可能會寫乙個名為 xyz 的函式,在另乙個可用的庫中也存在乙個相同的函式 xyz 這樣,編譯器就無法判斷您所使用的是哪乙個 xyz 函式。因此,引入了命名空間這個概念,專門用於解決上面的問題,它可作為附加資訊來區分不同庫中相同名稱的函式 類 變數等。使用了命名空間即定義了...

python學習 三十六 wxpython

pycharm 裡安裝wxpython 並且用pyinstaller打包 1 pycharm,file setting project interpreter,點選加號,安裝wxpython,然後安裝pyinstaller.2 建立乙個檔案 gui.py,寫乙個hello world的wxpytho...