go結構體中String介面的實現為什麼是結構體而不是指標

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
package main//Go語言群組合的思想很重,資料之間如果要傳承//需要將數組組合進來//Go有指標的概念,但是並沒有指標運算子import ("fmt")const (ANIMAL_CAT = 0ANIMAL_MOUSE = 1ANIMAL_DOG = 2)//go語言的介面type Animal interface {name() (string)setName(name string)setType(animalType int)getType()(int)}//貓type Cat struct{//名稱m_name string "名稱_tag"//類型m_type int "類型_tag"//種類m_spec string "種類_tag_反射用"}//接收器使用 (struct_name * StructType)和 (struct_name StructType)不一樣//Go語言中預設全部傳遞的是拷貝//在用法上優先考慮使用 (struct_name *StructType),避免傳值func (cat Cat) name()(string)  {return cat.m_name}func (cat Cat) setName(name string)  {cat.m_name = name}func (cat Cat) setType(ty int)  {cat.m_type = ty}func (cat Cat) getType()(int)  {return cat.m_type}func (cat Cat) getSpec()(string)  {return cat.m_spec}func (cat Cat) show()  {fmt.Printf(":=> name=%s type=%d spec=%s\n", cat.m_name, cat.m_type, cat.m_spec)}//func (cat Cat) init()  {//cat.m_name = "Cat"//cat.m_type = ANIMAL_CAT//}//老虎(貓科)type Tiger struct {//結構體中不能直接使用結構對象,但是可以使用指標//這樣彙總一個Cat對象的指標,相當於就從Cat做了繼承了//Cat的資料有了,調用方法直接使用cat調用//m_cat預設就是nil,所有的都會自動初始化m_cat * Cat}func main()  {//沒有建構函式,可以構造結構體來進行初始化cat := Cat{"Cat", ANIMAL_CAT, "Cat Spec"}cat.show()fmt.Printf("&cat=0x%X\n", &cat.m_name)//結構體賦值操作後,cat4和cat分別是兩個對象cat4 := catcat4.show()fmt.Printf("&cat4=0x%X\n", &cat.m_name)//如果接受器採用的是 (struct_name StructType),則調用函數無法設定結構體的資料//如果接收器採用的是(struct_name* StructType), 則沒有問題//GO語言中預設都是傳值,不會傳引用的,所以如果要修改值的話,請穿引用cat4.setName("Cat1")cat4.setType(ANIMAL_DOG)cat4.show()cat.show()//使用new關鍵字來,分配一個對象,Go語言自動初始化未初始化的資料//訪問資料的時候,直接使用.而不是->cat2 := new(Cat)cat2.m_name = "Mouse"cat2.m_spec = "Mouse Spec"cat2.m_type = ANIMAL_MOUSEcat2.show()fmt.Printf("&cat2=0x%X\n", cat2)//做賦值操作cat3和cat2是兩個不一樣的指標,但是指向同一個結構體對象cat3 := cat2fmt.Printf("&cat3=0x%X\n", cat3)cat3.m_name = "Mouse1"cat3.show()cat2.show()}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.