本篇文章分析go中结构体使用细节,结构体、组合结构体、OOP中继承的使用。
为什么要写这篇文章?
因为在使用go的过程中我总是把组合结构体和结构体继承的声明方式搞混淆,因此写这篇博文来提醒自己注意两者的区别。
一、 结构体介绍:
1、概述
一个结构体(struct)就是一个字段的集合。
type Vertex struct {
X int
Y int
}
func main() {
fmt.Println(Vertex{
1, 2})
}
2、结构体字段的调用
type Vertex struct {
X int
Y int
}
func main() {
v := Vertex{
1, 2}
v.X = 4
fmt.Println(v.X)
}
3、结构体指针
结构体字段可以通过结构体指针来访问。
如果定义一个指向结构体的指针 p,那么可以通过 (*p).X 来访问其字段 X。但是这样写比较麻烦,因此go语言也允许我们使用隐式间接引用,直接写 p.X 就可以。
type Vertex struct {
X int
Y int
}
func main() {
v := Vertex{
1, 2}
p := &v
p.X = 1e9
fmt.Println(v)
}
二、 普通结构体使用
创建结构体变量和访问结构体字段的方式有四种
方式1-直接声明
案例演示: var s student
方式2-{}字面量
案例演示: var s student = student {字段值1, 字段值2.. }
方式3-使用new关键字
案例: var s*= new (student )
方式4-指针
案例: var s*student = &student {}
代码如下:
/*结构体声明方式4种*/
type student struct {
name string
age int
score float64
}
//方法显示信息
func (s *student) showInfor() {
fmt