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能更大限度匹配,如果僅僅是輸入...