• 数组声明

Go 语言数组声明需要指定元素类型及元素个数,语法格式如下:

var variable_name [SIZE] variable_type

以上为一维数组的定义方式。数组长度必须是整数且大于 0。例如以下定义了数组 balance 长度为 10 类型为 float32:

var balance [10] float32

  • 初始化数组

以下演示了数组初始化:

var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

初始化数组中 {} 中的元素个数不能大于 [] 中的数字。

如果忽略 [] 中的数字不设置数组大小,Go 语言会根据元素的个数来设置数组的大小:

var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

该实例与上面的实例是一样的,虽然没有设置数组的大小。

balance[4] = 50.0

与c语言一样, 索引从0开始

  • 访问数组元素

通过 索引来访问数组元素

  • 多维数组

多维数组声明方式

var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type

   

go语言创建有序map go语言声明数组_数组


    • 定义切片
    • 声明一个未指定大小的数组来定义切片 
    var identifier []type
    • 使用make()函数来创建切片 
    var slice1 []type = make([]type, len)
    也可以简写为 
    slice1 := make([]type, len)
    • 可以为切片指定容量,其中capacity为可选参数 
    • make([]T, length, capacity) 
    • 初始化切片
    s :=[] int {1,2,3 } 
    直接初始化切片,[]表示是切片类型,{1,2,3}初始化值依次是1,2,3.其cap=len=3
    s := arr[:] 
    初始化切片s,是数组arr的引用 
    s := arr[startIndex:endIndex] 
    将arr中从下标startIndex到endIndex-1 下的元素创建为一个新的切片 
    s := arr[startIndex:] 
    缺省endIndex时将表示一直到arr的最后一个元素 
    s := arr[:endIndex] 
    缺省startIndex时将表示从arr的第一个元素开始 
    s1 := s[startIndex:endIndex] 
    通过切片s初始化切片s1
    s :=make([]int,len,cap) 
    通过内置函数make()初始化切片s,[]int 标识为其元素类型为int的切片 
    • 切片内置函数
    len(slice1)
    返回切片长度,返回length 
    cap(slice1)
    返回切片容量,返回capacity
    空切片
    一个切片在未初始化钱默认为null,长度为0
    切片截取
    见初始化切片部分
    append(slice1, x)
    在slice1后添加元素元素x(可添加多个)
    copy(slice1, slice2)
    拷贝slice2的内容到slice1
      
    示例:
    package main
    import "fmt"
    func main() {
     var numbers []int
     printSlice(numbers)
    /* 允许追加空切片 */
     numbers = append(numbers, 0)
     printSlice(numbers)
    /* 向切片添加一个元素 */
     numbers = append(numbers, 1)
     printSlice(numbers)
    /* 同时添加多个元素 */
     numbers = append(numbers, 2,3,4)
     printSlice(numbers)
    /* 创建切片 numbers1 是之前切片的两倍容量*/
     numbers1 := make([]int, len(numbers), (cap(numbers))*2)
    /* 拷贝 numbers 的内容到 numbers1 */
     copy(numbers1,numbers)
     printSlice(numbers1) 
    }
    func printSlice(x []int){
     fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
    }• Range关键字
    Go 语言中 range 关键字用于for循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引值,在集合中返回 key-value 对的 key 值。  
    示例: 
    package main
    import "fmt"
    func main() {
     //这是我们使用range去求一个slice的和。使用数组跟这个很类似
     nums := []int{2, 3, 4}
     sum := 0
     for _, num := range nums {
     sum += num
     }
     fmt.Println("sum:", sum)
     //在数组上使用range将传入index和值两个变量。上面那个例子我们不需要使用该元素的序号,所以我们使用空白符"_"省略了。有时侯我们确实需要知道它的索引。
     for i, num := range nums {
     if num == 3 {
     fmt.Println("index:", i)
     }
     }
     //range也可以用在map的键值对上。
     kvs := map[string]string{"a": "apple", "b": "banana"}
     for k, v := range kvs {
     fmt.Printf("%s -> %s\n", k, v)
     }
     //range也可以用来枚举Unicode字符串。第一个参数是字符的索引,第二个是字符(Unicode的值)本身。
     for i, c := range "go" {
     fmt.Println(i, c)
     }
    }