栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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这些关键字。
	// 它的可见性是由大小写决定的,当调用其它包的函数、结构体类型、结构体成员变量,
	// 它们的首字母都要大写,否则会报错。
}

结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/724071.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号