1.基本使用 介面是引用型別
package main
import
"fmt"
// 定義介面
type usb inte***ce
// 定義 3個結構體
type phone struct
type camera struct
type computer struct
// 實現方法
func
(p phone)
start
(a int
)int
func
(p phone)
stop()
func
(c camera)
start
(a int
)int
func
(c camera)
stop()
// 定義使用介面的函式 usb 為實現結構方法的例項
func
(c computer)
working
(usb usb, a int
)(res int
)func
main()
ca := camera
c1 := computer
// usb 為實現usb介面方法的例項
res := c1.
working
(p,20
) fmt.
printf
("3. working返回資料%v\n"
, res)
res2 := c1.
working
(ca,50)
fmt.
printf
("4. working返回資料%v\n"
, res2)
var p2 phone
// 可以定義乙個變數 型別是介面 = 實現介面方法的結構體的例項
var a usb = p2
a.start(88
) a.
stop()
}
輸出1.phone start 方法:
202.phone stop 方法
3. working返回資料21
1.camera start 方法:
502.camera stop 方法
4. working返回資料51
1.phone start 方法:
882.phone stop 方法
2 最佳實踐package main
import
("fmt"
"math/rand"
"sort"
)// 定義學生結構體
type student struct
// 定義學生結構體的切片
type studentslice [
]student
// studentslice 實現內建排序介面 sort.sort 的方法
//len() int; less(i, j int) bool; swap(i, j int); swap(i, j int)
func
(stu studentslice)
len(
)int
func
(stu studentslice)
less
(i, j int
)bool
func
(stu studentslice)
swap
(i, j int
)func
main()
studentslice =
(studentslice, stu)
} fmt.
printf
("--------學生資訊--------\n"
)for index, stu :=
range studentslice
fmt.
printf
("--------根據分數排序後學生資訊--------\n"
) sort.
sort
(studentslice)
for index, stu :=
range studentslice
}
輸出--
----
--學生資訊--
----
--0.name:名字81
0.age:
870.score:
471.name:名字59
1.age:
811.score:
182.name:名字25
2.age:
402.score:
563.name:名字0
3.age:
943.score:
114.name:名字62
4.age:
894.score:
285.name:名字74
5.age:
115.score:
456.name:名字37
6.age:
66.score:
957.name:名字66
7.age:
287.score:
588.name:名字47
8.age:
478.score:
879.name:名字88
9.age:
909.score:
15--
----
--根據分數排序後學生資訊--
----
--0.name:名字0
0.age:
940.score:
111.name:名字88
1.age:
901.score:
152.name:名字59
2.age:
812.score:
183.name:名字62
3.age:
893.score:
284.name:名字74
4.age:
114.score:
455.name:名字81
5.age:
875.score:
476.name:名字25
6.age:
406.score:
567.name:名字66
7.age:
287.score:
588.name:名字47
8.age:
478.score:
879.name:名字37
9.age:
69.score:
95
Go語言學習筆記(七)介面
go語言中的介面作用類似於c 中的虛函式機制,可以提供乙個統一呼叫的方式。介面是雙方約定的一種合作協議。介面實現者不需要關心介面會被怎樣使用,呼叫者也不需要關心介面的實現細節。介面是一種型別,也是一種抽象結構,不會暴露所包含資料的格式 型別及結構。每個介面型別由多個方法組成。type 介面型別名 i...
7 1 介面摘自《go語言學習筆記》
1,介面實現機制 只要目標方法集內包含介面宣告的全部方法,就被視為實現了該介面,無需做顯示宣告。目標型別可以實現多個介面。2,內部實現,介面自身也是一種結構型別 type iface struct不能有欄位 不能定義自己的方法。只能宣告方法,不能實現。可嵌入其它介面型別。3,介面通常以er作為介面字...
Go語言學習筆記 PART9 介面
go語言不是傳統的物件導向程式設計語言,沒有類和繼承的概念,但是有非常靈活的介面,可以實現物件導向的特徵,介面提供一種方式來說明物件的行為 type namer inte ce 複製 1.定義乙個介面 type shaper inte ce type square struct 2.square型別...