liujiusheng / blog

个人博客,blog
19 stars 0 forks source link

GO语言基础巩固 #238

Open liujiusheng opened 2 years ago

liujiusheng commented 2 years ago

变量

GO语言中会自动进行类型和变量检测,变量若声明了不使用会编译不通过,且一个函数可以返回多个变量,可以使用下划线声明匿名变量,匿名变量代表变量可忽略,有几个返回值需要忽略就需要有几个下划线。

var 表示全局变量

:=不能使用在函数外,表示局部变量

类型转换

T(表达式) 其中,T表示要转换的类型。表达式包括变量、复杂算子和函数返回值等

如:

string()

float64()

int()

结构体的初始化

创建匿名结构体

var user struct{Name string; Age int}

创建指针类型结构体

var p2 = new(person)

取结构体的地址实例化

p3 := &person{}

结构体初始化

var p4 person

使用键值对初始化

p5 := person{ name: "pprof.cn", city: "北京", age: 18, }

使用值的列表初始化

1.必须初始化结构体的所有字段。

2.初始值的填充顺序必须与字段在结构体中的声明顺序一致。

3.该方式不能和键值初始化方式混用。

p8 := &person{ "pprof.cn", "北京", 18, }

切片的初始化

切片本身也是一种结构体,所以可以用结构体的大括号初始化,以下是最常用的初始化方法。

由于切片的底层是数组,所以切片有容量和长度的概念,容量始终大于等于长度,当长度大于容量时会自动重新分配切片的内存地址。cap为容量

通过make初始化切片的语法:

slice := make([]type, len, cap)

// 初始化
s2 := []int{}

// 初始化赋值
 var s4 []int = make([]int, 0, 0)
 fmt.Println(s4)

 s5 := []int{1, 2, 3}
 fmt.Println(s5)

MAP的初始化

用make初始化语法:

make(map[KeyType]ValueType, [cap])

也可直接声明的时候初始化

userInfo := map[string]string{
        "username": "pprof.cn",
        "password": "123456",
    }

元素为map类型的切片

var mapSlice = make([]map[string]string, 3)

值为切片类型的map

var sliceMap = make(map[string][]string, 3)