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

全部開(kāi)發(fā)者教程

Go 入門教程

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

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

1. 指針的定義和使用

在 Go 語(yǔ)言中指針類型的聲明和 C/C++ 類似,都是采用 * 符號(hào)來(lái)區(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 行:通過(guò)指針修改 str 的值。

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

圖片描述

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

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

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

代碼示例

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 語(yǔ)言中指針的使用,以下為注意事項(xiàng):

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