1. 程式人生 > >GO語言學習:切片和陣列

GO語言學習:切片和陣列

1.陣列、切片

  陣列的長度是固定的,切片的長度是可變長的

 

  陣列的長度在宣告時就必須給定,並且之後不會再變化,陣列的長度是其型別的一部分,比如[1]string和[2]string 不是相同的陣列型別.

 

  切片可以看作是對陣列的封裝,每一個切片的底層的資料結構一定包含一個數組,陣列可以被叫做一個切片的底層陣列,切片可以看作是對陣列某個連續片段的引用.

 

  GO的引用型別:切片,通道,字典,函式型別.

  GO的值型別 : 陣列,基礎資料型別,結構體型別

  GO中傳的是值還是引用,看型別就可以區分.

2.len 、cap函式

  可以使用len取得到陣列和切片的大小和容量,陣列的大小等於容量,切片的容量大於等於大小.

3.example 

  package main

  import "fmt"

  func main() {
    s1 := make([]int, 5)
    fmt.Printf("The length of s1: %d\n", len(s1))
    fmt.Printf("The capacity of s1: %d\n", cap(s1))
    fmt.Printf("The value of s1: %d\n", s1)
    s2 := make([]int, 5, 8)


    fmt.Printf("The length of s2: %d\n", len(s2))
    fmt.Printf("The capacity of s2: %d\n", cap(s2))
    fmt.Printf("The value of s2: %d\n", s2)
  }

  執行結果:

    The length of s1:5

    The capacity of s1:5

    The value of s1:[0 0 0 0 0]

    The length of s2:5

    The capacity of s2:8

    The value of s2:[0 0 0 0 0 ]