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
}

猜你喜欢

转载自blog.csdn.net/qq_24243483/article/details/84145708