GO语言基础语法笔记总结(2) | 青训营

66 阅读2分钟

defer语句

defer也可以称之为延迟函数,顾名思义就是defer的语句会在函数最后时执行。defer一般有以下几点作用,首先最主要的作用便是能及时释放占用的资源,其次可以利用defer捕捉处理异常还有输出日志。还有要注意的是,如果一个函数中有多条defer语句,则defer是采取类似先进后出的原则,例如

func Demo(){
	defer fmt.Println("1")
	defer fmt.Println("2")
	defer fmt.Println("3")
	defer fmt.Println("4")
}
func main() {
	Demo()
}

以上代码执行后会依次输出4,3,2,1。

数组和切片

由于go语言的数组和其他大部分语言没什么不同这里就不多说了,着重说一说切片。切片可以理解为一种动态数组,go语言中数组的长度是固定的,而切片的长度则是可以根据数据进行变化,在往切片中追加元素时可以同时扩大切片容量,提高了代码的灵活性。

定义切片

var slice1 []type = make([]type, len)
或
slice1 := make([]type, len)

其中len为切片初始长度,在创建切片时len也可以不赋值。

切片有一些常用的函数,如len()和cap(),其中len()可以返回此时切片的长度,而cap()则是返回切片此时的容量如

package main

import "fmt"

func main() {
   var numbers = make([]int,3,5)


   printSlice(numbers)
}

func printSlice(x []int){
   fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}

将输出len=3 cap=5 slice={0,0,0}

另外切片还有一个常用的函数,为append()其作用为向切片中追加元素

map

go的map与一些语言中的map类似,map含有两个重要的元素,即key和value,key也可以称为索引,一般为int类型或者string类型。

定义map

var test1 map[string]string

test2 := make(map[string]string)

第一种在使用map前需要使用make来给map分配数据空间,第二种也可以在定义的同时对map赋值。