Go 结构体,定义结构体类型

package main
 
import "fmt"
 
// 定义结构体类型 (在函数外部定义(全局的),可以在整个项目中使用)
type student struct {
	id   int  // 结构体的成员
	name string
	age  int
}
 
func main() {
	// 定义结构体变量  (结构体是一种复合类型)
	var stu student
 
	// 为结构体成员赋值
	stu.id = 1  // 默认0 (int)
	stu.name = "张三"  // 默认空串 (string)
	stu.age = 20
 
	fmt.Println(stu)  // {1 张三 20} 按结构体定义时的成员顺序进行显示。
 
	// 定义结构体变量并赋值  (第二种方式)
	var stu2 = student{2,"李四",21}  // 按结构体定义时的成员顺序进行赋值
	fmt.Println(stu2)  // {2 李四 21}
 
	// 定义结构体变量并赋值  (第三种方式)
	// stu3 := student{3, "王五", 22}  // 按结构体定义时的成员顺序进行赋值
	stu3 := student{name:"王五", id:3}
	fmt.Println(stu3)  // {3 王五 0}
 
	// 结构体的地址
	fmt.Printf("%p \n", &stu)  // 0xc000004460
	fmt.Printf("%p \n", &stu.id)  // 0xc000004460 整个结构体的地址就是第一个成员的地址
	// 结构体成员在内存中按照定义时的成员顺序进行连续存储。
 
	// 结构体的比较
	stu4 := stu3
	// 结构体stu3与stu4的地址并不相同,修改其中一个并不会影响另一个。 (结构体作为函数参数是值传递,修改形参不会影响实参)
	fmt.Printf("%p \n", &stu3)  // 0xc000046480
	fmt.Printf("%p \n", &stu4)  // 0xc0000464c0
	fmt.Println(stu3 == stu4)   // true 结构体中的所有成员都相同时两个结构体才相等。 (只支持==和!=的比较)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值