go

63 阅读1分钟

基本类型

go语言内置7类基本类型:

  • 布尔类型: bool
  • 整型 : byte int int8 intl6 init32 int64 uint Uint8 uintl6 uint32 uint64 uintptr
  • 浮点型 : float32 float64
  • 复数: complex64 complexl28
  • 字符 : rune
  • 字符串: string

浮点数字面量被自动类型推断为float64类型

Go内置两种字符类型:一种是byte的字节型类型(byte是uint的别名),另一种是Unicode编码的字符rune。rune在Go内部是int32类型的别名,占4个字节。如需特殊的编码转换,则使用Unicode/UTF-8标准包。

字符串支持以下操作

  • 字符串连接:x+y
  • 字符串长度:len(s)
  • 取字符:s[i]
  • 取字符子串:s[b:e]表示取e-b个长度的字串
  • 字符串遍历
    Go语言支持两种方式遍历字符串。一种是字节数组方式,一种是Unicode字符遍历。如:
str := "Hello,世界"
n:=len(str)
for i:=0; i < n;i++ {
    ch := str[i] //根据下标取字符,类型为byte
    fmt.Println(i, ch)
}

for i,ch := range str {
    fmt.Println(i, ch) //ch类型为rune
    fmt.Printf("%c\n", ch) //输出中文
}

复合类型

Go语言基本的符合类型有指针、数组、切片、字典、通道、结构体、接口。

数组

//声明数组
var arr [2]int
//指定长度和初始化字面量
array :=[3]int {1,2,3}
//[...]后面跟字面量初始化列表
array := [...] float64 {7.0,8.5,9.1} 

数组访问:
for i,v range array {
    ...
}
数组长度:len(array)

切片
切片的创建方式有数组、make、切片字面量创建3种

//1.通过数组创建
array [b:e]创建一个包括e-b个元素的切片,第一个元素是array[b],最后一个元素是array[e-1]//2.通过内置的make函数创建,make([]T, len,cap)中T是切片元素类型,len是长度,cap是底层数组的容量,cap是可选参数。
//3.直接声明
可以直接声明一个切片也可以声明切片的过程中使用字面量并初始化,直接声明但不进行初始化的切片值为nil。例如:
var a []int //a is nil
var a []int = []int{1,2,3,4}

切片支持以下操作:

  • len():返回切片元素的数量
  • cap():返回重新分配前,容纳的元素最大个数。
  • append():将元素追加到切片的末尾,如果底层数组容量足够,则直接追加,否则需要重新分配一个新的底层数组。该函数返回一个新的切片。
  • copy():用于复制一个切片
//1.通过字面量创建
mp := map[string]int{"a":1, "b": 2}
//通过make创建
make(map[K]T, len)
  • 可以使用 range 遍历一个 map 类型变量,但是不保证每次选代元素的顺序。
  • delete 用来删除 map 中的某个键值对 。
  • len返回map中键值对的数量。
  • Go内置的map不是并发安全的,并发安全的map可以使用标准包sync中的map

//还可以把switch后的表达式去掉,类似if...else... switch { case num>=0 && num<=3 //处理逻辑 case num>=4 && num<=6 //处理逻辑