go中指針類型的用法

代碼

// 指針的用法
package main

import (
"fmt"
)

func main() {
var i int = 100
// 輸出i的地址
fmt.Printf("i的地址為%v\\n", &i) // i的地址為0xc000014088
// %p與&i,可正常輸出,%p無取址功能
fmt.Printf("i的地址為%p\\n", &i) // i的地址為0xc000014088
// %p與i,看出輸出格式有誤,不能輸出正確的地址
fmt.Printf("i的地址為%p\\n", i) // i的地址為%!p(int=100)

// 定義指針變量ptr,類型是*int,值為i的地址
var ptr *int = &i
fmt.Printf("ptr的值為%v\\n", ptr) // ptr的值為0xc000014088
// 獲取指針類型變量ptr指向的值,用*
fmt.Printf("ptr存的地址指向的變量的值為%d\\n", *ptr) // ptr存的地址指向的變量的值為100
// 輸出ptr自身的地址
fmt.Printf("ptr的地址為%v\\n", &ptr) // ptr的地址為0xc000098020

// 語法錯誤,不能用"*ptr2"這種形式的變量名
// var *ptr2 int = 200
// fmt.Printf("ptr2的值為%v\\n", ptr2) // line24 syntax error: unexpected *, expecting name

// 示例
n := 150
ptr3 := &n
*ptr3 = 300
fmt.Printf("n = %v\\n", n) // n = 300
}
go中指針類型的用法

指針類型變量的內存分配簡圖

總結

go中指針類型的用法

總結圖


分享到:


相關文章: