當前位置: 首頁>>編程語言>>正文


Go語言教程:指針

返回Go語言教程首頁

概念簡介

Go語言支持 指針
允許在程序中通過引用傳遞值或者數據結構。

例程代碼


package main

import "fmt"

// 我們將通過兩個函數:`zeroval` 和 `zeroptr` 來比較指針和
// 值類型的不同。`zeroval` 有一個 `int` 型參數,所以使用值
// 傳遞。`zeroval` 將從調用它的那個函數中得到一個 `ival`
// 形參的拷貝。
func zeroval(ival int) {
    ival = 0
}

// `zeroptr` 有一和上麵不同的 `*int` 參數,意味著它用了一
// 個 `int`指針。函數體內的 `*iptr` 接著_解引用_這個指針,
// 從它內存地址得到這個地址對應的當前值。對一個解引用的指
// 針賦值將會改變這個指針引用的真實地址的值。
func zeroptr(iptr *int) {
    *iptr = 0
}

func main() {
    i := 1
    fmt.Println("initial:", i)

    zeroval(i)
    fmt.Println("zeroval:", i)

    // 通過 `&i` 語法來取得 `i` 的內存地址,即指向 `i` 的指針。
    zeroptr(&i)
    fmt.Println("zeroptr:", i)

    // 指針也是可以被打印的。
    fmt.Println("pointer:", &i)
}

執行&輸出


# `zeroval` 在 `main` 函數中不能改變 `i` 的值,但是
# `zeroptr` 可以,因為它有這個變量的內存地址的
# 引用。
$ go run pointers.go
initial: 1
zeroval: 1
zeroptr: 0
pointer: 0x42131100

課程導航

學習上一篇:Go語言教程:遞歸    學習下一篇:Go語言教程:結構體

相關資料

本例程github源代碼:https://github.com/xg-wang/gobyexample/tree/master/examples/pointers

Go語言指針

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/4028.html,未經允許,請勿轉載。