go内置数据类型
- 内置数据类型
3.1 指针类型
3.1.1 定义指针
var a int = 10
var p *int = &a
pp := &a
1
2
3
3.1.2 空指针
默认值,空指针的值为 nil 。
3.1.3 访问指针
使用 *ptr 访问值,地址无法访问将产生运行错误。
结构体使用 name.attr 访问元素,在 Golang 中可以使用 ptr.attr 通过指针访问元素(Clang 是 ptr->attr)。
3.2 结构体类型
3.2.1 定义结构体
具名结构体
type Book struct {
name string
author string
}
var a Book // 定义默认结构体
var b = Book{"Golang 入门经典", "Unknown"} // 全部初始化
var c = Book{name: "C++ 入门指南"} // 局部初始化
d := Book{name: "鸟哥的 Linux 私房菜"} // 使用 :=
var e *Book = new(Book) // 使用指针
1
2
3
4
5
6
7
8
9
字段匿名
type Book struct {
string
string
}
var a Book = Book{"Golang 入门经典", "Unknown"}
1
2
3
4
5
结构体匿名
var a = struct{
name string
author string
}{"Golang 入门经典", "Unknown"}
1
2
3
4
两种匿名不可同时使用。
3.2.2 访问结构体
var a Book = Book{"Golang 入门经典", "Unknown"}
var p *Book = &a
fmt.Println(a.name, a.author)
fmt.Println(p.name, p.author) // 结构体指针直接使用 ptr.attr 访问
1
2
3
4
3.2.4 类型转换
如果两个结构体具有完全相同的定义,它们可以进行显式类型转换。
3.2.5 嵌套与继承
结构体嵌套将一个结构体作为新结构体的一个字段。
type Library struct {
name string
books []Book
}
1
2
3
4
结构体继承将一个结构体的字段和方法引入新结构体。结构体的方法后面会提及。
type ChildBook struct {
fitAge int
Book
}