第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

Go 入門教程

Go 語言基礎(chǔ)教程
01 Go語言簡(jiǎn)介 02 Go 在 Windows 上的安裝及配置 03 Go 在 Linux 上的安裝與配置 04 Go 在 MacOS 上的安裝及配置 05 Git 的下載和安裝 06 VSCode 編輯器安裝和配置 07 Go 的變量聲明 08 Go 的變量賦值 09 Go 語言的 := 10 Go 的整型(int) 11 Go 的無符號(hào)整型(uint) 12 Go 的浮點(diǎn)型(float) 13 Go 的字符類型 14 Go 的布爾型(bool) 15 Go 的強(qiáng)制類型轉(zhuǎn)換 16 Go 語言的常量 17 Go 語言中代替枚舉的辦法 18 Go 語言中的運(yùn)算符 19 Go 語言的分支語句 20 Go 語言的循環(huán)語句 21 Go 語言的通道 22 Go 語言中的函數(shù) 23 Go 語言函數(shù)中的 defer 24 Go 語言中的閉包 25 Go 語言的指針 26 Go 語言中的數(shù)組 27 Go 語言中的切片 28 Go 語言中的 Map 29 Go 語言中的 range 30 Go 語言拓展以有類型 31 Go 語言中的結(jié)構(gòu)體和"面向?qū)ο?quot; 32 Go 語言中的接口 33 Go 語言類型的內(nèi)嵌 34 Go 語言中的 nil 35 Go 語言函數(shù)式編程 36 Go 語言中的錯(cuò)誤和異常處理 37 Go 語言的并發(fā) 38 Go 語言中的包 39 Go 語言 go mod 包依賴管理工具 40 Go 語言的文件操作 41 Go 語言中的系統(tǒng)包 42 Go 語言的 strings 系統(tǒng)包的使用 43 Go 語言中的變參 44 Go 語言中的反射 45 Go 語言性能測(cè)試 46 使用 Go 語言搭建簡(jiǎn)易登錄功能 47 使用 gin 包優(yōu)化登錄功能

本文主要介紹 Go 語言中的指針。Go 語言中和 C/C++ 一樣,直接提供了指針類型,但是不同的是 Go 語言的指針并沒有那么高深莫測(cè),因?yàn)樗?strong>無法進(jìn)行位移和運(yùn)算的,它只是一個(gè)存儲(chǔ)了其它變量地址的變量而已。它在 Go 語言中最大的作用就是在值傳遞的過程中減少內(nèi)存消耗,畢竟一個(gè)地址的存儲(chǔ)開銷是十分少的。

1. 指針的定義和使用

在 Go 語言中指針類型的聲明和 C/C++ 類似,都是采用 * 符號(hào)來區(qū)分正常類型變量和指針變量。

代碼示例

package main

import (
    "fmt"
)

func main() {
    str := "Hello World !"
    var strP *string
    strP = &str
    *strP = "Hello Codey !"
    fmt.Println("指針strP的地址為", strP)
    fmt.Println("指針strP指向的值為", *strP)
    fmt.Println("變量str的地址為", &str)
    fmt.Println("變量str的值為", str)
}
  • 第 9 行:使用 *+變量類型的形式聲明一個(gè) string 類型的指針。
  • 第 10 行:將指針 strP 指向變量 str,也就是將變量 str 的地址賦值給指針變量 strP 。& 為取地址符,可以取出變量所在的地址。
  • 第 11 行:通過指針修改 str 的值。

執(zhí)行結(jié)果

圖片描述

從以上輸出結(jié)果可以看出,變量 strP 存儲(chǔ)的值就是變量 str 的地址,可以通過使用 *strP 操作符改變其存儲(chǔ)的地址所存儲(chǔ)的值

2. 指針作為函數(shù)的參數(shù)

Go 語言中只有值傳遞,沒有引用傳遞,因?yàn)橐脗鬟f設(shè)計(jì)之初是為了解決函數(shù)想要有多個(gè)返回值的問題,但是 Go 語言的函數(shù)自帶多返回值的返回方式。所以想要指針作為參數(shù)傳入函數(shù)中,只能傳遞地址進(jìn)入函數(shù)進(jìn)行修改,并不能直接引用指針參數(shù),這一特點(diǎn)就大大降低了 Go 語言指針的使用難度。

代碼示例

package main

import (
    "fmt"
)

func main() {
    a := 10
    b := 20
    fmt.Println("交換前的a=", a, "b=", b)
    swap(&a, &b)
    fmt.Println("交換后的a=", a, "b=", b)
}

func swap(a, b *int) {
    *a, *b = *b, *a
}
  • 第 11 行:將變量 a 和 b 的地址作為函數(shù) swap 指針參數(shù)的值傳入函數(shù);
  • 第 16 行:交換這兩個(gè)指針保存的地址所保存的值。

執(zhí)行結(jié)果

圖片描述

3. 小結(jié)

本文主要講解了 Go 語言中指針的使用,以下為注意事項(xiàng):

  • Go 語言的指針不可以做偏移
  • Go 語言的指針可以看作一個(gè)存儲(chǔ)地址的特殊變量類型。