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
",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
",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

  

原文地址:https://www.cnblogs.com/wanghaijun999/p/8134936.html