-
Go语言中的并发和通道
Go语言中的并发Go语言中通过go关键字来开启一个不同的、新创建的运行期goroutine实现并发goroutine是轻量级线程(可以理解为协程),调度是由Golang运行时进行管理的同一个程序中的所有 goroutine 共享同一个地址空间goroutine 语法格式:go func_name( args )一个Go程序启动后,main函数最先运行,称之为main goroutine,相当于主线程,当main函数执行完成后,主线程也就终结了,其下运行着的所有协程无论是否正在运行都会强制退出func demo(){fmt.Println("goroutine")} func main()...
2021-09-04 -
Go语言中的范围(Range)
Go语言中range关键字用于for循环中迭代核心类型为数组、指向数组的指针、slice、string、map、允许接收操作的通道在1.22版本中增加了迭代整数的功能在1.23版本充增加了迭代特定签名函数的功能如果for语句中定于的变量为两个则返回元素的索引和索引对应的值如果for语句中定义的变量为一个则返回元素的索引遍历切片: nums := [] int {1,2,3,4,5} for index,val := range nums { fmt.Printf("索引 %d 的值为 %d ", index , val) } 遍历集合: maps := map [string] ...
2021-09-04 -
Go语言中的Map映射
Map是通过key来快速检索数据,key类似于索引,指向数据的值我们可以像迭代数组和切片那样迭代它。但是由于Map是一种无序的键值对的集合(使用hash表来实现),无法决定它的返回顺序。类似于python中的集合dictMap的声明var map_variable map [key_data_type] value_data_type 也可以使用make函数 var map_variable = make( map [key_data_type] value_data_type ) 如果不初始化map,那么就会创建一个nil map Map的初始化声明一个nil map然后使用若干个...
2021-09-04 -
Go语言中的结构体
数组可以存储同一类型的数据,但在结构体中可以为不同项定义不同的数据类型结构体是由一系列具有相同类型或不同类型的数据构成的数据集合定义结构体结构体定义需要使用type-struct语句type语句定义结构体的名称struct语句定义结构体中的成员type struct_name struct { item1 type item2 type ... itemn type } 定义了结构体类型,就能用于变量的声明和赋值:variable_name := struct_name {val1, val2...valn} 不指定item赋值时传入的值必须顺序和数量都和结构体一...
2021-09-03 -
Go语言中的指针
变量是一种使用方便的占位符,用于引用计算机内存地址。Go语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址一个指针变量指向一个值的内存地址指针变量需要使用星号(*)作为前缀声明var var_name *var-type var-type为指针类型 var_name为指针变量名 * 号用于指定变量是作为一个(1级)指针 指针的使用指针使用流程:定义指针变量 为指针变量赋值 访问指针变量中指向地址的值(在指针类型前面加上针级别数量的星号作为前缀(**)来获取指针所指向的内容 var a int= 20 var ip *int = &a fmt.Print...
2021-09-03