Skip to content

learning1

Doifo edited this page Aug 4, 2023 · 3 revisions

变量

创建变量关键词:var,常量关键词:const

创建变量的方法:

1. 单变量声明
var name string = "abc"
var name = "abc"

2. 多变量声明
var (
	name string = "abc"
	age int
)	

3. 省略var, 使用:=, 只能用于函数内部
name := "abc"

4. 多变量声明初始化
name, age := "abc", 22

5. new一个
name := new(int)
fmt.Println(*name)

6. 匿名变量
a, _ := "100", 200

数据类型

整形

int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64

二进制:0B或0b开头

八进制:0o或0O开头

十六进制: 0x开头

浮点

float32, float64

byte

一个字节,0-255,表示一个ACSII字符

rune

四个字节,表示一个Unicode字符

字符串 string

字符串本质上是byte数组,可以用下标获取: string[index]。反引号包裹的字符串是原生型表示法,会忽略转义

数组 array

声明数组

var arr [3]int

var arr = [3]int{1, 2, 3}

arr := [...]int{1, 2, 3} // 根据实际情况分配空间

切片 slice

arr[0:2]表示数组的一个片段, []中的第一个数表示起始下标,第二个数表示终止下标,第三个数影响切片容量。

arr[1:2:4]表示截取[1-2)下标的字符串,新字符串容量为4-1=3

构造切片

1. 
var str = []string
var number = []int

2. make( []Type, size, cap )
a := make([]int, 2, 10)

添加元素

func main() {
    myarr := []int{1}
    // 追加一个元素
    myarr = append(myarr, 2)
    // 追加多个元素
    myarr = append(myarr, 3, 4)
    // 追加一个切片, ... 表示解包,不能省略
    myarr = append(myarr, []int{7, 8}...)
    // 在第一个位置插入元素
    myarr = append([]int{0}, myarr...)
    // 在中间插入一个切片(两个元素)
    myarr = append(myarr[:5], append([]int{5,6}, myarr[5:]...)...)
    fmt.Println(myarr)
}

字典 map

// 第一种方法
var scores map[string]int = map[string]int{"english": 80, "chinese": 85}

// 第二种方法
scores := map[string]int{"english": 80, "chinese": 85}

// 第三种方法
scores := make(map[string]int)
scores["english"] = 80
scores["chinese"] = 85

判断key是否存在 map返回对应下标的值时,还有第二个返回值表示该key是否存在

name, exist := map["key"]
if exist {
    fmt.Printf('exist')
}

遍历map

for key, value := range scores  {
    fmt.Println(key, value)
}

指针

创建指针的方法

1. 
num := 1
ptr := &num // 指针

2.
ptr := new(int) // 指针
*ptr = 1

3.
num := 1
var ptr *int = &num // 指针

指针声明后没有初始化,零值为nil

Clone this wiki locally