go语言的基础知识点2 | 青训营

95 阅读3分钟
  • 复杂数据类型

  • 指针:

var ptr *int=&age

接收数据时可以x,_ //即第二个返回值为忽略


  • 数组:

var 数组名 【n】类型

for range循环

for key,value := range coll{

}

1.coll就是你要遍历的内容

2.每次遍历得到的索引用key接受,每次遍历得到的索引位置上的值用val

3.key value的名字可以随便起

4.key value 都是单次循环的临时变量

四种数组开始时赋值

  1. var arr1 【3】int =【3】int{3,6,9}
  2. var arr2=【3】int {1,4,7}
  3. var arr3=【...】int{4,5,6,7}
  4. var arr4=【...】int{2:66,0:33,1:99,3:88}

  • 切片
    //动态的,不写长度

slice := 数组名【1:3】 //slice为数组中1-2 (不包含3)

包含指向底层数组的指针

切片的长度!=切片的容量

//切片不能越界

//切片可以再次切片

三种定义方法:

1.先建立一个数组,再用数组赋值切片

2.用make内置方式 //make底层创建数组,通过slice间接

var 切片名 【type =make(【】,len,【cap】)】

slice := make(【】数据类型,长度,容量)

3.直接定义一个slice

slice :=【】数据类型,长度,容量

简写方式

var slice=arr[0:end] -> var slice=arr[ :end]

var slice=arr[start:len] -> var slice=arr[start:]

var slice=arr[0:len] -> var slice=arr[:]

append 增加元素 //底层新建一个新数组,返回一个新切片


  • map(映射)

//将键值对进行关联

key - value

var map 变量名 map【keytype】valuetype

//slice map function 不可以被使用

只声明map并没有被分配内存空间,需使用make

a = make(map【int】string,10)

特点:

1.map集合使用前一定要make

2.map的key-value是无序的

3.key是不可以重复的,重复的后一个替换前一个

4.value是可以重复的

map的创建方式

1.默认

  1. b := make(map【int】string)

  2. c :=map【int】string{

//填入数据

}

delete:(map名,key)

查找: value,bool :=map【key】

**长度:**len

遍历://只有一种

forrange

for k,v := range b{

}:(map名,key)

  • 语法

  • 1. if else语句
    if后面没有(),直接写条件


  • 2. switch语句

(1)不需要在每一个case语句后面break,实现一个条件后自动break

(2)若switch后不加判断条件x,而是直接在case精后面加判断条件,则相当于多个if else嵌套的清晰易懂

(3)case可以用,将多个值分隔开

(4)fallthrough case穿透,对符合的case,对下一个case也输出

  • go中只存在for循环

break :结束最近的一个循环,也可以在循环前添加标签,break 标签来结束哪个循环

  • 函数

func 函数名 (参数)(返回值){ //返回值若只有一个类 型,括号可以省略

}

若无返回值 则不填任何类型即可

函数名命名和变量命名规则一致

函数不能重载


可变参数

args...类型

这种类型的函数,可以传0-n个参数,内部是当作切片来处理

数组

切片

  • 获取用户终端输入

scanf //需要用特定类型来输入 用空格来分割

fmt.Scanf("%d %s %f ",&age,&name,&score)

scanln

fmt.Scanln(&age) //传入的是地址,且输入数据类型和变量类型需一致

  • 思考与感悟

这篇笔记将go的复杂数据类型以及函数做了一些叙述,经过此次的梳理,我已经对go的学习有了更深一步的了解,希望我能坚持下去,在剩下的日子里把go语言学得更好,加油!