前言
GO语言内置以下这些基础类型
布尔类型 :bool
整形:int8,byte,int16,int,uint,uintptr等
浮点类型 :float32,float64(double)
复数类型: complex64,complex128
字符串:string
字符类型:rune
错误类型:error
指针pointer 数组array 切片slice 字典map 通道chan 结构体struct 接口(interface)
正文:
布尔类型:
Go语言布尔类型关键字为bool,可付志伟预定义的true和false示例如下:
//v1可被推导成bool类型 v1 :=(1 == 2) //布尔类型不能接受其他赋值 var v2 bool b=1 //编译错误
整型
注意int金额int32在GO中被认证为不同的类型,编译器也不会自动帮你做类型转换。
var value2 int32 value1:=64 //value将被推导成int型 value2=value //编译错误,强制类型转换会出现精度损失或者值溢出的问题
浮点型
Go语言定义了float32,和float64(double)两种类型,在使用推导时,如“”value float32:=2.0“”需要加小数点才能推导为浮点型。在float32与float64位转换过程中,需要强制类型转换,否则会出现编译错误。由于浮点型是一个不够精确的表达方式,所以需要采用自定义对比精度。
字符串类型
与其他语言基本相似。“HELLO”[1] //结果为E 为byte类型
字符类型
Go语言中支持2个字符类型一个是byte,代表UTF-8字符串的单个字节的值,另一个是rune,代表单个unicode。
数组类型
1.元素访问
可以使用数组下标来访问数组,与C语言相同,数组下标以0开始 len(array)-1代表最后一个元素的下标
for i:=0;i<len(array);i++{ fmt.Println("key",i,"value",array[i]) }
Go语言中,还提供了一个关键字range,用于快速遍历元素。如下:
func main() { var array = [5]int{1, 2, 3, 4, 5} for i, v := range array { fmt.Println("Array element[", i, "]=", v) } }
以上输出 Array element[ 0 ]= 1,Array element[ 1 ]= 2,Array element[ 2 ]= 3 ……
2.数组切片
数组在定义之后无法再次修改,数组是值类型,每次传递都需要复制副本,不过GO语言提供了数组切片(slice).
创建数组切片,基于数组创建和基于数组切片。可以看如下例子这是基于数组创建方法
func main() { var array = [9]int{1, 2, 3, 4, 5, 6, 7, 8} var array2 []int = array[:3] for _, v := range array2 { fmt.Print(v, " ") } //输出123 }
GO语言使用Array[start:end]方法基于数组生成数组切片。
下面是直接创建GO语言内置make()可以用于灵活的创建数组切片。下面的例子示范了创建数组切片的方法。
slice1 :=make([]int,5) slice2 :=make([]int,5,10) //初始元素为5个,预留10个元素的储存空间 slice3 :=[]int{1,2,3,4,5}
动态增减元素
假如设置了20个元素的位置,如果需要加入30个元素,底层会分配更大的内存,数组切片GO内置cap()和len()函数,cap()为切片数组分配的空间大小len()返回的是数组切片中的元素个数。
MAP类型
map是一个未排序的集合,
// learn project main.go package main import ( "fmt" ) type PersonInfo struct { ID string Name string Age int } // 以下输出Found Tom with ID 12345 func main() { //声明map类型 var personDB map[string]PersonInfo personDB = make(map[string]PersonInfo) //往map中插入数据 personDB["12345"] = PersonInfo{"12345", "Tom", 12} personDB["1"] = PersonInfo{"1", "Jack", 99} //OK是个boll型,返回true表示找到了数据 person, ok := personDB["12345"] if ok { fmt.Println(" Found", person.Name, "with ID 12345") } else { fmt.Println("Did not find person whth ID 12345.") } }
创建,我们可以用Go语言的内置函数make()来创建个新map,例子创建了一个键值类型为string,值的类型为PersonInfo的map。也可以在创建时指定该map的初始储存能力。
myMap=make(map[string] PersonInfo ,100) //创建并初始化MAP myMap =map[string]PersonInfo{ "1234":PersonInfo{"123","STEVEN","26"} } //元素赋值 如上面的例子。
元素删除,GO内置函数delete(),”delete(myMap,”123″)”来删除容器内部元素。 PS:如果:”1234″不存在,将不会有任何副作用,但如果map为nil则抛出异常。
后记:
刚撸就有一个狗头像的大神非常热心的帮助我真是尼玛太温暖了,虽然调了尼玛1天vscode最后也不尽人意 = =,感谢所有给新手铺路的大大们。下一节将简单记录一下 golang的流程控制。