美文网首页
study_go_day5 slice map

study_go_day5 slice map

作者: 无风起个浪 | 来源:发表于2019-03-09 21:35 被阅读0次

    package main

    import "fmt"

    //slice操作

    func sliceStudy()  {

    s1 := []int{2,4,6,8}

    printlnSlice(s1)

    //不知道值可以使用make

      s2 := make([]int,16)//len是16

      s3 := make([]int,10,32)//len是10,cap是32

      printlnSlice(s2)

    printlnSlice(s3)

    //copy函数

      fmt.Println("copying slice")

    copy(s2,s1)

    printlnSlice(s2)

    //删除,系统没有内建函数,使用append来做

      fmt.Println("deleting elements form slice")

    s2 = append(s2[:3],s2[4:]...)

    printlnSlice(s2)

    //删除头尾

      fmt.Println("poping  form front")

    front := s2[0]

    s2 = s2[1:]

    fmt.Println(front)

    printlnSlice(s2)

    fmt.Println("poping  form back")

    tail := s2[len(s2)-1]

    s2 = s2[:len(s2) -1]

    fmt.Println(tail)

    printlnSlice(s2)

    }

    func printlnSlice(s []int)  {

    fmt.Printf("s = %v,len(s) = %d,cap(s) = %d\n",s,len(s),cap(s))

    }

    //map[key]value,可以复合map[key1]map[key2]value

    func mapStudy() {

    m :=map[string]string{

    "name":"小强",

    "course":"golang",

    "site":"imooc",

    "quality":"notbad",

    }

    fmt.Println(m)

    //使用make函数定义

      m1 := make(map[string]int)//m1 == empty map

      fmt.Println(m1)

    //使用var来定义

      var m2map[string]int//m2 == nil,go语言的nil可以参与运算

      fmt.Println(m2)

    //使用range遍历map,key在map里是无序的

      fmt.Println("遍历map")

    for k,v :=range m{

    fmt.Println(k,v)

    }

    //map的操作

      fmt.Println("map的操作")

    courseName,ok := m["course"]

    fmt.Println(courseName,ok)

    //key写错里也可以取出一个空值,不会报错,可以使用"ok"来判断存不存在这个key

      if name,ok := m["ndme"];ok {

    fmt.Println(name)

    }else {

    fmt.Println("key不存在")

    }

    //删除元素,delet函数

      fmt.Println("删除元素")

    name,ok := m["name"]

    fmt.Println(name,ok)

    delete(m,"name")

    name,ok = m["name"]

    fmt.Println(name,ok)

    /*

    创建:make(map[k]v)

    获取元素:m[k]

    key不存在时,不会报错,获得value类型的初始值

    用value,ok := m【key】来判断是否存在key

    用delete删除一个key;delect(m,"key")

    map的遍历

    使用range遍历key,或者遍历key,value对

    不保证遍历顺序,如需顺序,需要手动对key排序

    使用len获得元素的个数

    map的key

    map使用哈希表,必须可以比较相等

    除了slice,map,function的内建类型都可以作为key

    Struct类型不包含上述字段,也可以作为key

    */

    }

    //例子:寻找最长不含有重复字符串的字串 abcabcbb->abc bbbbb->b pwwkew->wke

    func main() {

    //slice操作

      sliceStudy()

    //

      mapStudy()

    }

    相关文章

      网友评论

          本文标题:study_go_day5 slice map

          本文链接:https://www.haomeiwen.com/subject/xnnepqtx.html