go結構體的學習和使用

2021-07-23 20:13:16 字數 1657 閱讀 4944

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 賦...