定义一个结构体类型
方法:type 结构体名 struct{}
//定义一个person类
type person struct{
Name string
Age int
}
结构体初始化操作
a := person{
Name : "bai",
Age : 19,
}
结构体比较方法
如果结构体的成员之间可以比较,那么结构体也是可以比较的,结构体可以使用==或者!=进行比较,不支持> <运算符的比较。
func main(){
a:=person{
"bai",19}
b:=person{
"zhao",20}
fmt.Println("a == b",a == b)
fmt.Println("a != b",a != b)
}
同类型的结构体之间可以进行赋值操作。
a:=person{
"bai",19}
var temp person
temp = a
fmt.Println("a",a)
fmt.Println("temp",temp)
结构体作为函数参数
- 值传递:形参无法改变实参
func test1(p person){
p.Name = "zhao"
p.Age = 20
fmt.Println(p)
}
func main(){
a:=person{
"bai",19}
fmt.Println(a)
test1(a)
fmt.Println(a)
}
值传递无法改变实参
- 地址传递
func test1(p *person){
p.Name = "zhao"
p.Age = 20
fmt.Println(p)
}
func main(){
a:=person{
"bai",19}
fmt.Println(a)
test1(&a)
fmt.Println(a)
}
在Go语言中并没有class,因此没有私有成员于共有成员之分,因此在Go语言中,讲私有于共有通过函数首字母大小写进行区分。
- 大写字母表示,同一个包也可以访问到。
- 小写字母表示,只能在该文件中进行使用。