zoukankan      html  css  js  c++  java
  • Go 数组/多维数组/切片/map #2

    ◆【循环】

    ▶for

    1,通常

    for i=0; I < 5; i++{

    fmt.Println(i)

    }

    2,省略初始值

    for ; i < 5; i++{

    fmt.Println(i)

    }

    3,省略初始语句和结束语句

    for i < 5{

    i++

    fmt.Println(i)

    }

    4,无限循环

    for {

    fmt.Println("hello")

    }

    5,break跳出for循环

    6,continue继续下一次循环

    7,for range循环

     

    ▶switch

    switch s {

        case 1:

            fmt.Println(s)

        case 2,3:

            fmt.Println(s)

        case 4,5:

            fmt.Println(s)

        default:

            fmt.Println("over.")

        }

    不常用goto

     

    ◆【数组】

    定义

    1,定义数组

    var a [3]int

    var b [4]int

    2,定义时初始化

    var testArray = [3]string{"a","b","c"}

    3,编译器推导数组长度

    var testArray = [...]string{"a","b","c"}

    4,使用索引值初始化

    var testArray = [...]string{2:"a",4:"b",6:"c"}

     

    遍历

    1,for循环

    for i := 0; i < len(testArray); i++ {

        fmt.Println(testArray)

    }

    2, for range遍历

    for index, value := range testArray {

        fmt.Println(index, value)

    }

    只输出索引:

    for index := range testArray {

        fmt.Println(index)

    }

    只输出值:

    for _, value := range testArray {

        fmt.Println(value)

    }

     

    ◆【多维数组】

    1,二维数组

    testArray := [2][2]string{

        {"a1", "a2"},

        {"b1", "b2"},

    }

    或:

    testArray := [2][2]string{

        {"a1", "a2"},

        {"b1", "b2"}}

    多维数组简写:

    testArray := [...][2]string{

        {"a1", "a2"},

        {"b1", "b2"}}

     

    2,遍历二维数组

    for _, v1 := range testArray {

            for _, v2 := range v1 {

                fmt.Println(v2)

            }

        }

    注意事项

    1,数组是值类型,赋值,传参,都是拷贝了一份完整副本。

     

    ◆【切片】

    1,定义

    var s1 []string //声明切片;此时,s1是一个空切片[],长度和容量为0;且s1==nil

    var s2 []int{} //声明并且初始化;此时,s1是一个空切片[],长度和容量为0;且s2!=nil

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

     

    2,基于数组定义切片

    a := [5]int{1,2,3,4,5}

    切片:b:= a[1:4]

    切片再切片:c :=b[1:len(b)]

     

    3, make函数构造切片

    a := make([]int, 2, 5) //此切片个数为2,容量为5

    a := make([]int, 0) //a != nil

     

    4,通过len()函数获取切片长度

    5,通过cap()函数获取切片容量

     

    6,切片不能直接比较。

    可以和nil比较,例:s1 == nil

    使用len函数判断是否为0.

    7,切片的赋值拷贝

    切片赋值时,底层数组是一致的。

    s1 := make{[] int, 5} //[0,0,0,0,0]

    s2 :=s1

    s2[0] = 5 //此时,s1[0]值也为5

     

    8,切片扩容;append方法为切片添加元素。

    切片声明后,必须初始化,才能使用。

    例:

    var a []int //声明,并未申请内存。

    ※可以声明时初始化,也可以使用make函数初始化;也可采用append添加元素。

    追加元素(例):

    a = append(a,1,2,3,4)

    b := []int{5,6,7}

    a = append(a,b...) //注意:b后面需有3个点(...)。

     

    9,copy函数复制切片;此时,二者底层的数组不同。

    例:a := []int{1,2,3}

    b := make([]int,3,3)

    c := b //直接赋值,则c与b共用底层数组,修改b,则修改c.

     

    copy(b,a) //拷贝a到b

    b[0] = 10

    fmt.Println(a)

    fmt.Println(b)

     

    10,切片删除元素

    切片没有直接删除操作;间接方法如下:

    删除index的元素:append(a[:index], a[index+1:]...)

     

    11,切片排序sort

    var a = [...]int{2,4,3,7,5}

    sort.Ints(a[:]) //a[:]是一个切片,指向底层数组a.

    fmt.Println(a) //上面对切片排序,影响的是底层数组。

     

    ◆【map】

    1,定义map;

    不初始化时为nil;

    var a map[string]int //key为string;值为int

    a = make(map[string]int,9) //make初始化

    b := map[int]boot{ //声明时,初始化

    1:true,

    2:false,

    }

     

    2, 判断键是否存在

    map是无序的。

    value, ok := socreMap["test1"] //如果test1存在,value返回值,ok为true.

     

    ①遍历键,值对

    for k, v := range scoreMap {

    fmt.Println(k,v)

    }

     

    ②只遍历key。

    for k := range scoreMap {

    fmt.Println(k)

    }

     

    ③只遍历value.

    for _, v := range scoreMap {

    fmt.Println(v)

    }

     

    3,删除键值对

    delete(scoreMap,"test1")//使用delete函数,删除scoreMap中的test1键值对。

     

    value := rand.Intn(100) //生成0~99的随机数。

     

    4,其它

    值为切片的map;

    var sliceMap = make(map[string][]int,8) //只完成了map的初始化,后续使用要初始化切片。

  • 相关阅读:
    gc buffer busy解释
    验证db time
    如何优化log file sync
    客户数据库出现大量cache buffer chains latch
    一份awr分析
    Statspack报告中Rollback per trans过高怎么办
    awr分析要点记录
    Oracle AWR报告及统计数据之DB Time说明
    Oracle 相关视图tips
    struts2 action 乱码
  • 原文地址:https://www.cnblogs.com/mountain2011/p/12494827.html
Copyright © 2011-2022 走看看