package main
//go語言組合的思想很重,資料之間如果要傳承
//需要將陣列組合進來
//go有指標的概念,但是並沒有指標運算子
import (
"fmt"
)const (
animal_cat = 0
animal_mouse = 1
animal_dog = 2
)//go語言的介面
type animal inte***ce
//貓type cat struct
//接收器使用 (struct_name * structtype)和 (struct_name structtype)不一樣
//go語言中預設全部傳遞的是拷貝
//在用法上優先考慮使用 (struct_name *structtype),避免傳值
func (cat cat) name()(string)
func (cat cat) setname(name string)
func (cat cat) settype(ty int)
func (cat cat) gettype()(int)
func (cat cat) getspec()(string)
func (cat cat) show()
//func (cat cat) init()
//老虎(貓科)
type tiger struct
func main()
cat.show()
fmt.printf("&cat=0x%x\n", &cat.m_name)
//結構體賦值操作後,cat4和cat分別是兩個物件
cat4 := cat
cat4.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_mouse
cat2.show()
fmt.printf("&cat2=0x%x\n", cat2)
//做賦值操作cat3和cat2是兩個不一樣的指標,但是指向同乙個結構體物件
cat3 := cat2
fmt.printf("&cat3=0x%x\n", cat3)
cat3.m_name = "mouse1"
cat3.show()
cat2.show()
}
go學習十三 結構體
go 語言中陣列可以儲存同一型別的資料,但在結構體中我們可以為不同項定義不同的資料型別。結構體是由一系列具有相同型別或不同型別的資料構成的資料集合。使用 go run struct.go 執行該檔案即可 package main import fmt func main structparam pe...
Go 學習筆記 結構體
package main import fmt 結構體是由一系列具有一組相同或不同資料構成的資料集合,表達乙個整體概念。結構體定義 type struct variable type struct 宣告與初始化 variable name structure variable type 或 vari...
Go 結構體,結構體指標和方法
結構體 講乙個或多個變數組合到一起形成新的型別,這個型別就是結構體,結構體是值型別 定義結構體和賦值 learn go main.go package main import fmt type people struct func main fmt.printf p peo 0x110040f0 賦...