互連網二十多年,已到十字路口。區塊鏈出現前的互連網被稱為古典互連網,而應用區塊鏈技術的互連網才進入了後互連網時代。作為一項新興的技術,區塊鏈無疑正處於風口浪尖之上,其發展前景於普通福士而言也終將是利好。但目前由於區塊鏈技術處於發展早期階段,存在技術成熟度等級、落地應用情境有限等問題,兄弟連教育建議使用者在選擇專業Go語言+區塊鏈培訓機構前應進行仔細考量與辨別。
type $name struct{
property01 int
property02 int
}
Golang裡面的方法和介面都是基於這裡type *** struct建立的類型,這裡其實可以理解為:
class $name {
public int property01;
public int property02;
}
類型就是類。
所以我們說是類型的某個方法,類型實現了某個介面。
類型是屬性的集合,介面是方法的集合
函數的定義:func $funcName ( ) ( ){}
方法的定義:func ( ) $funcName ( ) ( ){}
Func (成員變數 類型) funname(局部變數 類型,局部變數 類型) (傳回值類型) {}
成員變數是通過type來定義的。
函數的參數列表是需要傳遞的局部變數。
golang的方法的類型簽名:
1.指明要給哪個類型添加方法;
2.指定調用此方法的變數的是實值型別還是指標類型,調用此方法的變數必須按照類型簽名這裡來決定是用實值型別還是指標類型,golang能自動轉換,但你必須確保這個變數能被正確轉換為相應的值或指標。例如,一個介面類型的變數就沒法被轉換為一個struct的指標。
繼承:
當一個類型B的某個欄位(匿名欄位)的類型是另一個類型 A的時候,那麼類型 A所擁有的全部欄位都被隱式地引入了當前定義的這個類型B。這樣就實現了繼承。B類型的變數就可以調用A的所有屬性和方法。也就是說A繼承了B。
定義繼承時,子類中一般都含有一個類型是父類的匿名欄位。匿名欄位就是用來實現繼承的。
package main
import (
"fmt"
)
type Animal struct {
Name string
Age int
}
func (ani *Animal) GetAge() int {
return ani.Age
}
type Dog struct {
Animal //Animal匿名欄位
}
func main() {
dog := Dog{Animal{"dog", 10}}
fmt.Println(dog.Age)
fmt.Println(dog.GetAge())
}
方法的重寫
如果一個類型B實現了作為其屬性的類型A中的方法。那麼這個類型B的值調用方法的時候調用的是自己類型B的方法,而不是屬性類型A的方法。
代碼如下:
package main
import (
"fmt"
)
type Animal struct {
Name string
Age int
}
func (ani *Animal) GetAge() int {
return ani.Age
}
type Dog struct {
Animal //Animal匿名欄位
}
func (ani Dog) GetAge() int {
return ani.Age + 1
}
func main() {
dog := Dog{Animal{"dog", 10}}
fmt.Println(dog.Age)
fmt.Println(dog.GetAge())
}
介面
1 介面
1)定義介面類型
定義介面,介面中可以有未實現的方法。
type Animal interface {
GetAge() int
}
1)實現介面類型
如果某個類型實現了介面的所有方法。則這個類型實現了這個介面。
type Animal interface {
GetAge() int
}
type Dog struct {
Name string
Age int
}
//實現GetAge()方法則實現了Animal介面
func (ani Dog) GetAge() int {
return ani.Age
}
高能預警,兄弟連教育區塊鏈直播課程8月持續火爆來襲!
原價1188元的12節區塊鏈進階課程,現僅需1元!
還可免費領取《Go語言基礎實戰項目開發》與《Go語言進階實戰項目開發》教材兩本!!限時限量!!先到先得!!
http://www.ydma.cn/open/course/24
關注兄弟連區塊鏈技術公眾號領取更多技術乾貨哦!!!