(文章持续更新中...有志同道合的人能够一块儿探讨下。整个系列(1~8)准备重写,不过都是很基础的入门笔记,想学到很深刻的东西则不建议阅读...)bash
Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各类属性。能够类比为“类”数据结构
Go 语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。布局
结构体就是数据结构一种表现方式,可嵌套ui
// 结构体的定义
type 类型名 struct {
字段1 字段1类型
字段2 字段2类型
…
}
type Point struct {
X int
Y int
}
复制代码
结构体的定义只是一种内存布局的描述,只有当结构体实例化时,才会真正地分配内存。所以必须在定义结构体并实例化后才能使用结构体的字段spa
// 基本实例化格式
var ins T
type Point struct {
X int
Y int
}
var p Point
p.X = 10
p.Y = 20
// Go 语言中,还可使用 new 关键字对类型(包括结构体、整型、浮点数、字符串等)进行实例化,结构体在实例化后会造成指针类型的结构体。
ins := new(T)
Go 语言中,对结构体进行&取地址操做时,视为对该类型进行一次 new 的实例化操做
ins := &T{}
Go 语言中,访问结构体指针的成员变量时能够继续使用.操做符。 C/C++ 语言中,使用 new 实例化类型后,访问其成员变量时必须使用->操做符
复制代码
Go语言为任意类型添加方法指针
// 为基本类型添加方法
package main
import (
"fmt"
)
// 将int定义为MyInt类型
type MyInt int
// 为MyInt添加IsZero()方法
func (m MyInt) IsZero() bool {
return m == 0
}
// 为MyInt添加Add()方法
func (m MyInt) Add(other int) int {
return other + int(m)
}
func main() {
var b MyInt
fmt.Println(b.IsZero())
b = 1
fmt.Println(b.Add(2))
}
复制代码