• go语言的array、slice 和 map


    数组作为语言中必不可少的一个存在,自然要关注,而slice(切片)是go语言对数组的抽象。

    array

    在go中,我们这样声明一个数组:
    var arr [10]int
    赋值:
    arr[0]=1

    数组大小是类型的一部分。由于不同的大小是不同的类型,因此不能改变大小

    数组同样是值类型的: 将一个数组赋值给另一个数组,会复制所有的元素。尤其是当向函数内传递一个数组的时候,它会获得一个数组的副本,而不是数组的指针。

    当然,作为语法超赞的go,当然还有更简洁的数组声明,和赋值语句,比如:
    a :=[2]int{1,2}

    不确定数组长度的情况下可以:

    a :=[...]int{1,2}, go会自动计数。(注意三点...是不能省略的)。

    slice

    slice 与 array 接近,但是在新的元素加入的时候可以增加长度。
    slice 总是指向底层的
    一个 array。
    slice 是一个指向 array 的指针,这是其与 array 不同的地方;slice 是引用
    类型,这意味着当赋值某个 slice 到另外一个变量,两个引用会指向同一个 array。

    slice声明语法:
    var slice1 []type = make([]type, len)

    也可以简写为

    slice1 := make([]type, len)

    实例展示:

    // array[n:m] 从 array 创建了一个 slice,具有元素 n 到 m-1
    a := [...]i n t {1, 2, 3, 4, 5} .0
    s1 := a[2:4] .1
    s2 := a[1:5] .2
    s3 := a[:] .3
    s4 := a[:4] .4
    s5 := s2[:] .5
    .0 定义一个 5 个元素的 array,序号从 0 到 4;
    .1 从序号 2 至 3 创建 slice,它包含元素 3, 4;
    .2 从序号 1 至 4 创建,它包含元素 2, 3, 4, 5;
    .3 用 array 中的所有元素创建 slice,这是 a[0:len(a)] 的简化写法;
    .4 从序号 0 至 3 创建,这是 a[0:4] 的简化写法,得到 1, 2, 3, 4;
    .5 从 slice s2 创建 slice,注意 s5 仍然指向 array a。
    

    map

    在 Go 中有 map 类型。map 可以认为是一个用字符串做索引的数
    组(在其最简单的形式下).
    Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
    Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。

    • map定义方法:
      map [<from type>]<to type>

    比如,time:= map[string]int{
    "year":2019,
    "month":12,
    "day":2,
    }

    也可以用,make(参照内建函数)的形式:
    time := make(map[string]int)

    • 打印年份:
    fmt.Printf("%d", time["year"])
    
    • map新增元素:
      time["hour"] = 22

    • map重写元素:
      time["hour"] = 23

    • 检查这个元素是否存在:
      value, present = monthdays["Jan"] 如果存在,present 则有值 true

    或者

    v, ok := monthdays["Jan"]

    array、slice、map这三者,常常与range, copy, append等内建函数联合使用(多记)。

  • 相关阅读:
    cf1011 E. Border
    cf 1011 D. Rocket
    cf 1011C. Fly
    cf 1015 E2. Stars Drawing (Hard Edition)
    cf 1015 E1. Stars Drawing (Easy Edition)
    Walking Between Houses(Codeforces-1015D)
    D. Vasya And The Matrix 构造
    点击数据将之前信息隐藏显示当前(手机端页面)
    连接返回上一步(上一个页面)
    公共的css样式
  • 原文地址:https://www.cnblogs.com/famine/p/11973974.html
Copyright © 2020-2023  润新知