/*
结构体:相当于java 的类
*/
package main
import "fmt"
//结构体的定义
type Student struct {
id int
name string
sex byte
age int
}
func test(s Student) {
s.name = "yaya"
}
func test2(s *Student) {
s.name = "yaya"
s.age = 88
}
func main() {
//01 顺序初始化,每个成员必须初始化
var s1 Student = Student{1, "mike", 'm', 19}
fmt.Println("s1=", s1)
//02部分初始化 其他没有赋值的为默认值
s2 := Student{id: 11}
fmt.Println("s2=", s2)
//03 指针 顺序初始化,每个成员必须初始化
var s3 *Student = &Student{1, "mike", 'm', 19}
fmt.Println("s3=", *s3)
//04 指针 部分初始化 其他没有赋值的为默认值
s4 := &Student{id: 11}
fmt.Println("s4=", *s4)
//05定义结构体普通变量 操作成员“."
var s5 Student
s5.age = 18 //赋值
fmt.Println("age=", s5)
//06结构体指针变量 指针有合法指向时,才操作成员
//方式1先定义一个普通结构体变量
var s6 Student
var p1 *Student
p1 = &s6
p1.name = "huahua"
fmt.Println("p1=", p1)
//方式2
p2 := new(Student)
p2.name = "花花"
fmt.Println(p2)
//07结构体的比较和赋值 同种类型的可用== !=比较;同种类型的也可以直接赋值。
fmt.Println("s2=", s2)
s2 = s1
fmt.Println("s2=", s2)
//08 结构体作为参数传递时 是值传递;传递引用需要传递指针变量类型
test(s2)
fmt.Println("值传递s2=", s2)
test2(&s2)
fmt.Println("引用传递s2=", s2)
//09 可见性 不同包之间需要调用,函数、方法等等首字母需要大写。
}
3.11 go 结构体
猜你喜欢
转载自blog.csdn.net/h4241778/article/details/105306464
今日推荐
周排行