go 语言struct
struct的作用:
struct 其实就是用来自定义复杂的数据结构,来表示基本数据类型不能表示的数据类型。比如一个学生的各种属性(年龄、性别,姓名等)
struct的定义 :
type 标识符 struct{
filed1 type //filed1是字段,type标识字段的类型,可以多个字段,字段名不可重复
filed2 type
... ...
}
例:
type student struct{
name string
age int
score int
}
通过上述定义,就自定义了一个名为student的数据类型,如何 使用呢?其实就相当于使用基本数据类型。
func teststruct(){
var stu1 student //定义一个名为stu1 类型为student的变量
stu1.age = 100 //访问student数据类型中的字段的方法是stu1.age,这行就是给变量赋值
stu1.name = "wang"
stu1.score = 120
fmt.Printf("%#v\n",stu1) //打印输出结果
}
//输出结果是:
//main.student{name:"wang", age:100, score:120}
上面定义了一个普通变量,下面我来看怎么定义一个指针变量以及指针变量的使用。func teststructpoint(){
var stu *student //定义指针变量
stu = new(student) //给指针变量赋值,指针变量的值必须是地址。new(type)就是给stu分配类型为student的内存地址。或者这样定义也可以,先定义一个普通变量,把普通变量的地址赋值给stu.例:var stu1 student stu = &stu1
(*stu).name = "lilili"
stu.age = 100 //stu.age 相当于 (*stu).age,这个是go的语法糖
stu.score = 200
fmt.Printf("%#v\n",stu)
}
//输出结果
//&main.student{name:"lilili", age:100, score:200}
上面我们知道了struct的作用及定义方法,以及自定义类型以后的使用。那我们来总结一下,使用student类型时如何定义
- var stu Student //定义变量
- var stu *Student = new (Student) //定义指针变量并初始化
- var stu *Student = &Student{} //定义指针变量并初始化
访问方式如下:
stu.age 或者
(*stu).age

浙公网安备 33010602011771号