go语言基础-----05-----结构体

一 结构体的相关学习

go语言的结构体学习起来是比较简单的,下面按照顺序去看即可。

package main

import "fmt"

// 普通变量的声明有var关键字,结构体内部不需要var
type Student struct {
	id int
	name string
	sex byte
	age int
	addr string
}

func main(){

	// 1. 结构体的初始化
	// 1.1 结构体普通变量初始化
	// 1)顺序初始化,每个成员必须赋值
 	var s1 Student = Student{1, "mm", 'm', 11, "gz"}
 	fmt.Println("s1 = ", s1)

 	// 2)指定成员初始化,没有赋值的自动按照类型赋默认值
 	s2 := Student{id:1, name: "gg"}
 	fmt.Println("s2 = ", s2)

 	// 1.2 结构体指针变量初始化
	// 1)顺序初始化,每个成员必须赋值,但是需要加上&。
	var s3 *Student = &Student{2, "mm", 'm', 11, "gz"}
	fmt.Println("s3 = ", s3)

	// 2)指定成员初始化,没有赋值的自动按照类型赋默认值
	s4 := &Student{id:1, name: "hh"}
	fmt.Println("s4 = ", s4)

	// 2. 结构体成员的使用
	// 2.1 普通变量的使用
	var s5 Student
	s5.id = 100
	s5.name = "hc"
	s5.sex = 'w'
	s5.age = 18
	s5.addr = "jm"
	fmt.Println("s5 = ", s5)

	// 2.2 指针变量的使用
	// go中的指针调用成员变量都是使用点(.),p.id和(*p).id是完全一样的,不存在C的->
	var s6 Student
	var p *Student
	p = &s6
	p.id = 11
	(*p).name = "lqq"
	p.sex = 'w'
	p.age = 24
	p.addr = "where"
	fmt.Println("s6 = ", s6)

	// 3. 结构体的比较和赋值
	// 3.1 结构体比较
	var s7 Student = Student{id: 1, name: "q", sex: 'w', age: 12, addr: "aa"}
	var s8 Student = Student{id: 1, name: "q", sex: 'w', age: 12, addr: "aa"}
	var s9 Student = Student{id: 2, name: "q", sex: 'w', age: 12, addr: "aa"}
	fmt.Println("s7==s8", s7 == s8)
	fmt.Println("s7==s9", s7 == s9)

	// 3.2 结构体赋值
	var t Student
	t = s7
	fmt.Println("t = ", t)
	fmt.Println("t == s7", t == s7)

	// 4. 结构体作函数形参
	// 1)结构体作函数形参是值传递。
	// 2)结构体指针作函数形参是地址传递。  与数组类似。

	// 5. go语言的可见性问题
	// 5.1 go和C++不一样,没有private、protected、public这些关键字。
	// 它的可见性是由大小写决定的,当调用其它包的函数、结构体类型、结构体成员变量,
	// 它们的首字母都要大写,否则会报错。
}

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值