兄弟連區塊鏈培訓分享Go語言golang 組合和介面

來源:互聯網
上載者:User

  作為一種底層技術,區塊鏈技術由最初的數字貨幣到智能合約再到如今各行業情境分布式落定應用的實現,自2008年提出至今的10年間,區塊鏈從最初的理論構想到如今的實際情境應用落地,雖質疑重重但卻一直努力前行。尤其是近兩年內,區塊鏈對於現有行業邏輯的重新構建讓它無可爭議地成為下一個發展的風口。


  兄弟連教育Go語言+區塊鏈培訓學院是由兄弟連教育攜手微軟區塊鏈領域全球最具價值專家尹成及其帶領的清華水木未名教學團隊所組成,學習周期為五個半月,內容涵蓋Go語言、區塊鏈密碼學、分布式編程、共識演算法、公鏈開發、以-太=坊與智能合約與DAPP開發、區塊鏈系統架構開發超級賬本與區塊鏈3.0EOS等內容。


一,組合

golang 中一切 皆是類型


這個和 物件導向的 概念有點像 ,但是又不太像,和javascript倒是有些相似之處


那麼如何? 像 Java中的 繼承呢,golang使用的是組合


請看代碼 和 運行輸出 說明一切


type father struct {

name string

sex int

}

type sun struct {

father

name string

}

func main() {

s:=sun{father:father{name:"father",sex:11},name:"sun"}

fmt.Println(s)

fmt.Println("name",s.name)

fmt.Println("name",s.father.name)

fmt.Println("sex",s.sex)

fmt.Println("sex",s.father.sex)

}


=======================================


{{father 11} sun}

name sun


name father

sex 11

sex 11

===================================


father的sex屬性就被組合進了sun ,成為了sun的屬性,雖然我的 命名是 father和 sun但 二者不是繼承 是組合的關係


當father的屬性 和 sun的屬性同名,被組合者 即母體 sun優先,想要 訪問 father的name需要 s.father.name


二 .介面

//介面中可以組合其它介面,這種方式等效於在介面中添加其它介面的方法

type Reader interface {

read()

}

type Writer interface {

write()

}


//定義上述兩個介面的實作類別

type MyReadWrite struct{}


func (mrw *MyReadWrite) read() {

fmt.Println("MyReadWrite...read")

}


func (mrw *MyReadWrite) write() {

fmt.Println("MyReadWrite...write")

}


//定義一個介面,組合了上述兩個介面

type ReadWriter interface {

Reader

Writer

}


//上述介面等價於:

type ReadWriterV2 interface {

read()

write()

}


//ReadWriter和ReadWriterV2兩個介面是等效的,因此可以相互賦值

func interfaceTest0104() {

mrw := &MyReadWrite{}

//mrw對象實現了read()方法和write()方法,因此可以賦值給ReadWriter和ReadWriterV2

var rw1 ReadWriter = mrw

rw1.read()

rw1.write()


fmt.Println("------")

var rw2 ReadWriterV2 = mrw

rw2.read()

rw2.write()


//同時,ReadWriter和ReadWriterV2兩個介面對象可以相互賦值

rw1 = rw2

rw2 = rw1

}


三.介面和組合

1.由於結構struct實現了介面的所有方法,所以可以將struct賦值給相應的介面

2.在 struct2中已經實現了對介面的所有的方法的實現

3.而struct1 如果組合的struct2了,那麼struct1也就實現了介面的所有方法的實現,所以可以將struct1賦值給介面

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.