1. 程式人生 > >go的指針學習

go的指針學習

返回 內存地址 imp div [0 light highlight 變量 指針變量

1)指針是什麽?

一個指針變量可以指向任何一個值的內存地址它指向那個值的內存地址

說白了就是可以先存儲內存的地址,在用內存地址找到對應值

2)go中的使用

Go 語言的取地址符是 &,放到一個變量前使用就會返回相應變量的內存地址。

Go 語言的取值得地址符是 *,放到一個地址前使用就會返回相應內存對應的值。

package main

import "fmt"

func main() {
	var a int = 10

	fmt.Printf("變量的地址: %x\n", &a)
}

3)指針也可以聲明類型

var ip *int        /* 指向整型*/
var fp *float32    /* 指向浮點型 */

4)根據內存地址獲取值

package main

import "fmt"

func main() {
	var a int = 2000
	var ip *int /* 聲明指針變量 */
	ip = &a     /* 指針變量的存儲地址 */
	fmt.Printf("變量的地址: %x\n", &a)
	fmt.Printf("根據地址獲取值為: %d\n", *ip) //註意為%d整型
}

5)go的空指針,一個指針變量通常縮寫為 ptr。

if(ptr != nil)     /* ptr 不是空指針 */
if(ptr == nil)    /* ptr 是空指針 */

6)指針數組,原理類似

package main

import "fmt"

const MAX int = 3

func main() {
   a := []int{10,100,200}
   var i int
   var ptr [MAX]*int;

   for  i = 0; i < MAX; i++ {
      ptr[i] = &a[i] /* 整數地址賦值給指針數組 */
   }

   for  i = 0; i < MAX; i++ {
      fmt.Printf("a[%d] = %d\n", i,*ptr[i] )
   }
}

  輸出結果

a[0] = 10
a[1] = 100
a[2] = 200

  

go的指針學習