这是我参与「第五届青训营 」笔记创作活动的第12天.
go指向数组的指针:
定义语法:
var pa [max]*int 表示数组里面的元素的类型是指针类型
import "fmt"
func main() {
a := []int{1, 2, 3}
var pa [3]*int
fmt.Println("pa:", pa)
for i := 0; i < len(a); i++ {
pa[i] = &a[i]
}
fmt.Println("pa:", pa)
for i := 0; i < len(a); i++ {
fmt.Printf("%v ", *pa[i])
}
}
go语言类型定义和类型别名的区别:
1.类型定义相当于定义了一个全新的类型,与之前的类型不同,但是类型别名并没有定义一个新的类型,而是使用一个别名来替换之前的类型.
2.类型别名只会在代码中存在,在编译完成之后并不会存在该别名.
3.因为类型别名和原来的类型是一致的,所以原来类型所拥有的方法,类型别名中也可以调用,但是如果是重新定义的一个类型,那么不可以调用之前的任何方法.
import (
"fmt"
)
func main() {
type myInt int
var i myInt
i = 100
fmt.Printf("i:%T %v\n", i, i)
type my = int
var j my
j = 100
fmt.Printf("j:%T %v", j, j)
}
go结构体:
go语言没有面向对象的概念,但是可以使用结构体来实现,面向对象的一些特性:继承,组合等;
go语言结构体的定义:
type type_name_struct struct{
member definition
member definition
...
member definition
}
type:结构体定义关键字
type_name_struct :结构体类型名
struct:结构体定义关键字
member definition: 成员定义
import "fmt"
type Person struct {
id int
name string
age int
email string
}
func main() {
var pe Person
fmt.Printf("pe:%v\n", pe)
pe.id = 1
pe.name = "tom"
pe.age = 12
pe.email = "tom@gemail.com"
fmt.Printf("pe:%v\n", pe)
}
匿名结构体定义:
//匿名结构体
var tom struct {
id int
name string
age int
}
tom.id = 1
tom.name = "tom"
tom.age = 12
fmt.Printf("tom:%v\n", tom)
加油!
明天也要继续加油~