跟我一起学习GO语言004

2019-06-22  本文已影响0人  搬砖人1314

接上一节继续学习Go语言,存储和组织数据的方式

首先我们来学习数组,数组是一段固定长度的连续内存区域。

数组声明:var 数组变量名[元素数量] T

//声明一个字符串数组
    varteam [5]string
    team[0] = "Hao"
    team[1] = "do"
    team[2] = "you"
    team[3] = "do"
    team[4] = "?"

    //输出
    fmt.Println(team)

输出:[Haodo you do ?]

遍历数组,访问每一个数组元素,然后输出。

   //遍历数组,访问每一个数字元素

    varnum [3]int

    num[0] = 1
    num[1] = 3
    num[2] = 5

    fork, v := range num {
        fmt.Println(k, v)
    }
输出:

0 1 
1 3
2 5

切片(slice),动态分配大小的连续空间;切片的内部结构包含地址、大小和容量。

切片声明:var name[]T

//声明整型切片
    varnumlist []int
    //声明字符串切片
    varstrlist []string
    //声明一个空切片
    varstrlistempty = []int{}
    //输出三个切片
    fmt.Println(numlist, strlist,strlistempty)
    //切片判定空结果
    fmt.Println(numlist == nil)
    fmt.Println(strlist == nil)
    fmt.Println(strlistempty ==nil)

输出:
[] [] []
true true false

下面我们使用make()函数构造切片,make([]T,size,cap),T:切片元素类型;size:切片分配多少个元素;cap:预分配的元素数量。

    aa := make([]int, 2)
    bb := make([]int, 2, 10)//容量不会影响当前元素个数
   fmt.Println(aa, bb)

接下来我们看看怎么为切片添加元素,通过append函数添加元素。

//声明一个整型切片

    varnumbers []int
    fori := 0; i < 8; i++ {
        //通过append函数添加元素
        numbers = append(numbers, i)
    }
    //输出切片元素
    fmt.Print(numbers)

输出:[01 2 3 4 5 6 7]

如果我们要复制一个切片元素到另一个切片怎么操作呢?

    //设置元素数量为888
    constelementcount = 888
    //预分配足够多的元素切片
    stcData := make([]int, elementcount)
    //复制给切片
    fori := 0; i <elementcount; i++ {
        stcData[i]= i
    }
    //预分配足够多的元素切片
    copyData := make([]int, elementcount)
    copy(copyData,stcData)
    //输出两个切片的第8个元素
    fmt.Println(stcData[7], copyData[7])

输出:77

接下来我们怎么删除切片中的元素

//声明一个字符串切片
    sep := []string{"a", "b", "c", "4", "d", "e"}
    //指定删除位置
    index := 3
    //查看删除位置之前和之后的元素
    fmt.Println(sep[:index],sep[index+1:])
    //将删除点前后的元素连接起来
    sep = append(sep[:index],sep[index+1:]...)
    //输出新的切片
    fmt.Println(sep)

输出:
[a b c] [d e]
[a b c d e]

GO语言中切片删除元素的本质是以删除元素为分界点,将前后两个部分的元素连接起来。

接下来我们映射(map),建立事物关联的容器,定义:map[KeyType] ValueType ; KeyType为键类型,ValueType为键对应的值类型。

scene := make(map[string]int)
    //给对应键赋值
    scene["route"] = 66
    //输出键的值
    fmt.Println(scene["route"])
    mm := map[string]int{

        "a": 1,
        "b": 3,
        "c": 5,
        "d": 7,
    }

    //输出map
    fmt.Println(mm)

输出:66

map[a:1 b:3 c:5 d:7]
遍历map的键值对,访问每一个map中的关联关系

//循环输出
    fork, v := range mm {
        fmt.Println(k, v)
    }

输出:

a 1
b 3
c 5
d 7

删除map中的键值对使用delete()函数

//删除mm键值对中的b
    delete(mm, "b")
    //删除后输出
    fork, v := range mm {
        fmt.Println(k, v)
    }

输出:
a 1
c 5
d 7

请开始你的表演,践行,践行,再践行。未完待续。。。

上一篇 下一篇

猜你喜欢

热点阅读