91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go語言中有沒有引用傳遞

發布時間:2020-12-18 09:58:28 來源:億速云 閱讀:181 作者:小新 欄目:編程語言

這篇文章主要介紹go語言中有沒有引用傳遞,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

go語言沒有引用傳遞。go語言沒有引用變量,程序中定義的每個變量都占用一個唯一的內存位置,因此go語言不能創建兩個共享同一內存位置的變量。

go語言沒有引用傳遞。go語言沒有引用變量,程序中定義的每個變量都占用一個唯一的內存位置,因此go語言不能創建兩個共享同一內存位置的變量。

首先要明確一點,Go 沒有引用變量,所以 Go 語言里調用函數的時也沒有引用傳遞。

什么是引用變量?

在一些開發語言中(比如 C++),對已存在的變量可以聲明別名,這種別名稱為引用變量。

 1#include <stdio.h>
 2
 3int main() {
 4        int a = 10;
 5        int &b = a;
 6        int &c = b;
 7
 8        printf("%p %p %p\n", &a, &b, &c); // 0x7ffe114f0b14 0x7ffe114f0b14 0x7ffe114f0b14
 9        return 0;
10}

可以看到 a、b 和 c 都指向相同的內存位置。對 a 的寫操作會影響 b 和 c。當你想在不同的范圍內聲明引用變量時,這是很有用的——即函數調用時。

Go 語言沒有引用變量

與 C++ 不同,Go 程序中定義的每個變量都占用一個惟一的內存位置。

1package main
2
3import "fmt"
4
5func main() {
6        var a, b, c int
7        fmt.Println(&a, &b, &c) // 0x1040a124 0x1040a128 0x1040a12c
8}

創建兩個共享同一內存位置的變量是不可能的。可以創建兩個指向同一內存位置的變量,不過這與兩個變量共享同一內存位置是不同的。

 1package main
 2
 3import "fmt"
 4
 5func main() {
 6        var a int
 7        var b, c = &a, &a
 8        fmt.Println(b, c)   // 0x1040a124 0x1040a124
 9        fmt.Println(&b, &c) // 0x1040c108 0x1040c110
10}

上面這段代碼,b 和 c 都具有相同的值 -- 即變量 a 的地址,但 a、c 存儲在內存中不同的位置。改變 b 的內容不會影響到 c。

map 和 channel 是引用?

錯!map 和 channel 不是引用,如果是的話下面這段代碼會輸出 false。

如果map m 是 C++ 風格的引用變量,則在 main() 聲明的 m 和 在 fn() 聲明的 m 會共享相同的內存空間。但是,因為對 fn() 中 m 賦值不影響 main() 的 m,所以我們可以看出 map 不是引用變量。

總結

Go 沒有引用傳遞,因為 Go 沒有引用變量。

以上是“go語言中有沒有引用傳遞”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平乡县| 夏河县| 秦皇岛市| 怀安县| 西乡县| 青州市| 嘉定区| 台前县| 张家界市| 江门市| 沂源县| 隆德县| 林芝县| 凉山| 正宁县| 浮梁县| 清水县| 芮城县| 靖远县| 保山市| 凤城市| 恩平市| 临漳县| 富裕县| 凤冈县| 德兴市| 施甸县| 三明市| 长汀县| 五莲县| 仁寿县| 砚山县| 湟源县| 句容市| 新巴尔虎右旗| 伊春市| 阜宁县| 伊金霍洛旗| 任丘市| 同心县| 夹江县|