golang的指針和切片


首先為什么要講go的指針和切片放在一起?

因為go指針和切片都是引用類型

引用類型就是說切片和指針保存的只是內存的地址,而不是具體的值,效率在大數據讀取方面效率會高很多。

 

1、怎么定義一個切片

方法1:

    var a []int
    a = make([]int, 0)
    //給切片賦值
    a[0] = 100
注意,這種方式需要對切片進行初始化,否者這個切片不能被使用
 
方法2:
    var a []int = make([]int, len)
 
切片的使用和數組一樣
    a[0] = 100
    fmt.Println(a)
 
2、怎么定義一個指針
方法1  

    var p *string
    p = new(string)
    *p = "abc"

 

方法2

    var str string = "hello"
    p = &str

 
下面是一個例子
func test() {
    //定義一個切片
    var a []int
    //給a分配一個內存(初始化)
    a = make([]int, 10)
    //給切片賦值
    a[0] = 100
    fmt.Println(a)

    //定義一個切片類型的指針
    var p *[]int
    //給指針初始化
    p = new([]int)
    //給切片初始化,分配一個切片內存
    (*p) = make([]int, 10)
    //給切片賦值
    (*p)[0] = 100
    fmt.Println(p)
    
    p = &a
    (*p)[0] = 1000
      (*p)[1] = 10
      (*p)[2] = 11
      (*p)[3] = 12
      (*p)[4] = 13
      fmt.Println(a)

      fmt.Printf("len is %d\n", len(a))
      for i := 0; i < len(a); i++ {
          fmt.Printf("num is %d\n", a[i])
      }
}


func main() {
    test()
}

這個例子一定要注意的是當指針賦值的是切片類型,那么指針和切片都需要做初始化,否則會報錯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM