zoukankan      html  css  js  c++  java
  • Golang基础(3):数组,切片和字典

    一:数组

    数组是一个具有相同类型元素,固定长度的有序集合,一般定义如下:
    var x [5]int
    表示数组是一个整数型数组,长度为5
    数组的几种定义方式

    a: var来定义数组,然后依次赋值

    package main
    
    import "fmt"
    
    func main() {
        var x [4]int
        x[0] = 1
        x[1] = 12
        x[2] = 4
        x[3] = 19
        var sum int
        for _, elem := range x {
            sum += elem
        }
        fmt.Println(sum)
        /**
        我们用range这个go语言内置的方法来遍历数组,其实range也可以用在切片和字典上面
        当你对一个返回值不感兴趣时候,可以用下划线 _ 来忽略这个值
        **/
    }

    b: 第二种定义方法

    package main
    
    import "fmt"
    func main() {
        var x = [4]int{1, 12, 4}
        x[3] = 19
        var sum int
        for _, i := range x {
            sum += i
        }
        fmt.Println(sum)
    }

    c: 第三种定义

    //如果我们不能显示知道数组长度,也可以用 ... 来代替长度

    func main() {
        var x = [...]string{
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",    // 这里最后如果没有逗号,那么西面的大括号{要紧挨这个Friday,注意
        }
        for _, day := range x {
            fmt.Println(day)
        }
    }

    二:切片

    上面数组是有固定长度的有序集合,也就是说一段数组长度定义了,你也无法向里面添加元素了。
    当元素个数不确定时候,我们又想添加元素进去,这时候数组就不合适了,这时候切片slice登场了
    切片和数组类似,切片有一个优点,那就是切片长度是可变的

    a: make定义切片

    package main
    
    import "fmt"
    
    func main() {
        var arr1 = make([]int, 4)
        fmt.Println("Capcity:", cap(arr1), "Length:", len(arr1))
    
        var arr2 = make([]int, 5, 10)
        fmt.Println("Captity:", cap(arr2), "Length:", len(arr2))
    
        for i := 0; i < len(arr1); i++ {
            arr1[i] = i
        }
        fmt.Println(arr1)
    
        for i := 0; i < len(arr2); i++ {
            arr2[i] = i
        }
        fmt.Println(arr2)
    }

    用make定义切片
    1:只指定长度,这个时候切片的容量和长度相同
    2:另外一种同时指定切片的容量和长度

    b: 用数组定义切片

    package main
    
    import "fmt"
    
    func main() {
        var arr1 = [4]int{1, 23, 2, 3}
        var s1 = arr1[1:2]
        var s2 = arr1[:3]
        var s3 = arr1[:]
        fmt.Println(s1, s2, s3)
    }

    c: append给切片追加元素

    package main
    
    import "fmt"
    
    func main() {
        var arr1 = make([]int, 4, 10)
        for i := 0; i < len(arr1); i++ {
            arr1[i] = i
        }
    
        arr1 = append(arr1, 1, 2, 5, 30)
        fmt.Println("Capacity: ", cap(arr1), "Length:", len(arr1))
        fmt.Println(arr1)
    }

    三:字典

    字典是一个无序的,键值对的集合

    a: 第一种定义:

    package main
    
    import "fmt"
    
    func main() {
        var x = map[string]string{
            "A": "apple",
            "B": "banana",
            "O": "orange",
            "P": "pear",
        }
        for key, val := range x {
            fmt.Println("key:", key, "val:", val)
        }
    }

    b: 第二种make定义

    package main
    
    import "fmt"
    
    func main() {
        var x map[string]string
        x = make(map[string]string)
           //上面的2行还可以合成一行 x:=make(map[string]string)
        x["A"] = "apple"
        x["B"] = "banana"
        x["O"] = "orange"
        x["P"] = "pear"
    
        for key, val := range x {
            fmt.Println("key:", key, "val:", val)
        }
    }
  • 相关阅读:
    《将博客搬至CSDN》
    所谓找链表中点
    虚函数
    编辑距离
    数组移位
    DFA
    Single Number III
    XOR异或解惑
    First Bad Version
    while(!in.empty()) 和 while(in.size())
  • 原文地址:https://www.cnblogs.com/jiujuan/p/8996361.html
Copyright © 2011-2022 走看看