Go语言学习:每日一练2
结构体
//定义
type Vertex struct {
X, Y int
}
//使用
func main() {
v1 := Vertex{1, 2}
fmt.Println(v.X)
//别的实例化方式
var v2 Vertex
v2 := *new(Vertex) //返回的是指针
}
零值
结构体的零值并非是nil,而是一个其内部各个字段取各自零值的实例
func main() {
var p Person
p1 := p
p1.Name = "mike"
fmt.Println(p.Name)
fmt.Println(p1.Name)
}
type Person struct {
Name string
}
数组
数组的零值类似于结构体,会根据其类型设置分别设置每个元素的零值
var array [3]int
//[0, 0, 0]
var array [3]int
//创建
//1.声明的时候初始化
array := [6]int{1, 2}
//2.用new
array := *new([3]int)
切片
切片的零值是nil
var slice []int
//创建
//1.声明的时候初始化
slice := []int{1, 2}
//2.用make
slice := make([]int, 0)
//3.从数组创建
slice := array[0:2]
映射
零值是nil
//声明
var m map[string]string
//创建map
//1. 使用字面量
m := map[string]string{
“a” : “aaaa”,
“b”: “bbbb”.
}
//2. 使用make
m := make(map[string]string)
指针
类型*T是指向T类型值的指针,其默认值为nil。指针也是一种类型。
操作符:
&操作符会生成一个指向其操作对象的指针。
*操作符表示指针指向的底层值。
var p *int
a := 3
p = &a
b := *p
各个类型的零值一览