Golang語言學習從入門到實戰 介面

2021-10-03 19:28:51 字數 2378 閱讀 6284

inte***ce型別可以定義一組方法,但是這些不需要實現。並且inte***ce不能包含任何變數。

當某個自定義型別要使用的時候,在根據具體情況把這些方法寫出來。

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

func

(c camera)

start()

func

(c camera)

stop()

type computer struct

func

(c computer)

working

(usb usb)

func

main()

phone := phone

camera := camera

computer.

working

(phone)

computer.

working

(camera)

}輸出:

手機開始工作

手機停止

相機開始工作

相機停止工作

介面本身不能建立例項,但是可以指向乙個實現了該介面的自定義型別的變數(例項)

package main

import

"fmt"

type ainte***ce inte***ce

type stu struct

func

(stu stu)

say(

)func

main()

輸出:

stu say

()

介面中所有的方法都沒有方法體,即都是沒有實現的方法

在golang中,乙個自定義型別需要將某個介面的所有方法都實現,我們說這個自定義型別實現了該介面

乙個自定義型別只有實現了某個介面,才能將該自定義型別的例項(變數)賦給介面型別

只要是自定義資料型別,就可以實現介面,不僅僅是結構體型別

乙個自定義型別可以實現多個介面

package main

import

"fmt"

type ainte***ce inte***ce

type binte***ce inte***ce

type monster struct

func

(m monster)

hello()

func

(m monster)

say(

)func

main()

輸出:

say hello

hello hello

golang介面中不能有任何變數

乙個介面(比如a介面)可以繼承多個別的介面(比如b,c介面),這時如果要實現a介面,也必須將b,c介面的方法也全部實現

package main

import

"fmt"

type ainte***ce inte***ce

type binte***ce inte***ce

type cinte***ce inte***ce

type monster struct

func

(m monster)

hello()

func

(m monster)

say(

)func

(m monster)

run(

)func

main()

inte***ce型別預設是乙個指標(引用型別),如果沒有對```inte***ce初始化就使用,那麼會輸出nil

空介面inte***ce{}沒有任何方法,所以所有型別都實現了空介面,即我們可以把任何乙個變數賦給空介面

Golang語言學習從入門到實戰 鍊錶定義

每個節點包含下乙個節點的位址,這樣把所有的節點都串起來了,通常把鍊錶中的第乙個節點叫做煉表頭 type student struct 定義乙個簡單的鍊錶 package main import fmt 定義乙個鍊錶結構 輸出 package main import fmt math rand 定義乙...

Golang語言學習資源

一 知名的golang開源框架 1.beego 乙個國產的http框架,我們可以用它快速開發各種應用程式。2.gogs 乙個國產的自主git託管服務程式,我們可以用它來搭建自己的git伺服器。3.docker 乙個軟體部署解決方案,也是乙個輕量級的應用容器框架。使用docker,我們可以輕鬆地打包 ...

從零到一學習golang語言 初識go語言(一)

從本篇文章起,從零到一學習go語言。到底是go語言還是golang語言,其實官網已經表態過為go語言。官網的網域名稱使用是因為go.org已經被註冊過了,需要花幾千萬購買,但是沒這個必要。第二個原因使用golang是因為,在搜尋引擎中查詢相關go的資料時使用golang能更大限度匹配,如果僅僅是輸入...