1. 程式人生 > >Go/複合資料型別/struct-結構體

Go/複合資料型別/struct-結構體

# 結構體

package main

import "fmt"

type Stu struct{
	age int
	sex byte	//字元型
	name string
}

func main() {
	//結構體定義與初始化
	//順序初始化  每個成員都必須初始化
	var s Stu = Stu{18,'m',"Lusa"}
	fmt.Println(s)					//{18 109 Lusa}
	//指定初始化  剩餘成員預設值
	ss := Stu{name:"Tom"}
	fmt.Println(ss)					//{0 0 Tom}

	var ps *Stu = &Stu{18,'m',"Lusa"}
	pss := &Stu{name:"Jack"}
	fmt.Println(ps)					//&{18 109 Lusa}
	fmt.Println(*ps)				//{18 109 Lusa}
	fmt.Printf("%T\n",pss)		//*main.StuB

	//結構體比較與賦值
	s2 := s
	fmt.Println(s == s2)			//true

	test()

	test2(s)						//值傳遞
	test3(&s)						//傳遞地址
}

func test(){
	var s Stu
	var ps *Stu = &s
	ps2 := new(Stu)
	s.age = 18
	(*ps).sex = 'm'
	ps.name = "Amy"
	fmt.Println(s)
	fmt.Println(*ps2)
}

func test2(s Stu){
	s.age = 20
}

func test3(s *Stu){
	s.age = 20
}