Golang结构体|青训营

53 阅读1分钟

go语言没有面向对象的概念了,但是可以使用结构体来实现,面向对象编程的一些特性,例如:继承、组合等特性

go语言结构体的定义

结构体的定义和类型定义类似,只不过多了一个 struct 关键字,语法结构如下:

type struct_variable_type struct {
   member definition;
   member definition;
   ...
   member definition;
}

type :结构体定义关键字

struct variable type : 结构体类型名称

struct :结构体定义关键字

member definition; : 成员定义

实例

下面定义一个人的结构体Person

type Person struct {
    id    int
    name  string
    age   int
    email string
}

以上定义一个Person结构体,有四个成员,来描述一个Person的信息。 形同类型的可以合并到一行,例如:

声明一个结构体变量

声明一个结构体变量和声明一个普通变量相同,例如:

var tom Person
fmt.Printf("tom: %v\n", tom)
kite := Person{}
fmt.Printf("kite: %v\n", kite)

运行结果

tom: {0 0  }
kite: {0 0  }

访问结构体成员

可以使用运算符(.),来访问结构体成员,例如:

package main

import "fmt"

func main() {
	type Person struct {
		id, age     int
		name, email string
	}

	var tom Person
	tom.id = 1
	tom.name = "tom"
	tom.age = 20
	tom.email = "tom@gmail.com"
	fmt.Printf("tom: %v\n", tom)
}

运行结果如下

tom: {1 20 tom tom@gmail.com}

匿名结构体

如果结构体是临时控制,可以不用起名字,直接使用,例如:

package main

import "fmt"

func main() {
	var dog struct {
		id   int
		name string
	}
	dog.id = 1
	dog.name = "花花"
	fmt.Printf("dog: %v\n", dog)
}