zoukankan      html  css  js  c++  java
  • GO语言数组,切片,MAP总结

    数组

    数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。
    数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变。数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1,访问越界(下标在合法范围之外),则触发访问越界,会panic。
    数组是值类型,赋值和传参会复制整个数组。因此改变副本的值,不会改变本身的值。

    数组声明

    var 数组变量名 [元素数量]元素类型
    var a [3]int  //声明一个长度为3的整形数组
    var city = [...]string{"北京", "上海", "深圳"} //声明一个可变长度的字符串类型数组并且初始化
    

    数组定义必须指定长度。
    让编译器根据初始值的个数自行推断数组的长度...

    切片

    切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。
    切片是一个引用类型,它的内部结构包含地址、长度和容量。

    切片声明

    var 变量名称[]元素类型       //切片不需要声明长度
    var a []string              //声明一个字符串切片
    var b = []int{}             //声明一个整型切片并初始化
    var c = []bool{false, true} //声明一个布尔切片并初始化
    

    使用make()函数构造切片

    make([]元素类型, 切片中元素的数量, 切片的容量)
    s := make([]int, 2, 10)
    

    切片不需要指定长度。
    切片之间是不能比较,只能和nil比较!

    map

    map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。map是无序的。

    map声明

    map[键类型]值类型
    make(map[KeyType]ValueType, [cap])
    其中cap表示map的容量,该参数不是必须的
    

    三种声明方式

    //第一种声明
    var test1 map[string]string
    //在使用map前,需要先make,make的作用就是给map分配数据空间
    test1 = make(map[string]string, 10) 
    test1["one"] = "php"
    //第二种声明
    test2 := make(map[string]string)
    test1["one"] = "php"
    //第三种声明,初始化赋值
    test3 := map[string]string{
        "one" : "php",
    }
    
  • 相关阅读:
    HDU 1010 Tempter of the Bone
    HDU 4421 Bit Magic(奇葩式解法)
    HDU 2614 Beat 深搜DFS
    HDU 1495 非常可乐 BFS 搜索
    Road to Cinema
    Sea Battle
    Interview with Oleg
    Spotlights
    Substring
    Dominating Patterns
  • 原文地址:https://www.cnblogs.com/show58/p/12610710.html
Copyright © 2011-2022 走看看