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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

指針解引用在 Go 中是如何工作的?

指針解引用在 Go 中是如何工作的?

Go
肥皂起泡泡 2021-08-30 21:55:25
我正在瀏覽http://tour.golang.org/ 上的 golang 教程,并在示例 29 中嘗試了一些東西供您參考,原始示例復(fù)制到此處:package mainimport "fmt"type Vertex struct {    X, Y int}var (    p = Vertex{1, 2}  // has type Vertex    q = &Vertex{1, 2} // has type *Vertex    r = Vertex{X: 1}  // Y:0 is implicit    s = Vertex{}      // X:0 and Y:0)func main() {    fmt.Println(p, q, r, s)}這是非?;镜?,展示了如何創(chuàng)建這個(gè)花哨的新結(jié)構(gòu)的實(shí)例,Vertex. 但是,示例 28顯示了通過(guò)指向頂點(diǎn)的指針來(lái)操作頂點(diǎn),因此我稍微修改了示例,并且對(duì)輸出感到驚訝。這是修改:func main() {    t := *q    q.X = 4    u := *q    fmt.Println(p, q, r, s, t, u, t == u)}和輸出:{1 2} &{4 2} {1 0} {0 0} {1 2} {4 2} false令我驚訝的是它t不是 {4, 2},這似乎意味著更改q.X更改了q指向的結(jié)構(gòu)的實(shí)例。來(lái)自 C/C++ 背景,這對(duì)我來(lái)說(shuō)似乎是非常奇怪的行為。那么,這里究竟發(fā)生了什么?為什么使用q.X = 4改變頂點(diǎn)不會(huì)傳播到t?
查看完整描述

1 回答

?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊

t := *q復(fù)制指向的結(jié)構(gòu)體q。


如果您想觀察qthrough 的變化t,請(qǐng)堅(jiān)持使用指針:


var (

    p = Vertex{1, 2}  // has type Vertex

    q = &Vertex{1, 2} // has type *Vertex

    r = Vertex{X: 1}  // Y:0 is implicit

    s = Vertex{}      // X:0 and Y:0

)



func main() {

    t := q

    q.X = 4

    u := *q

    fmt.Println(p, q, r, s, t, u, *t == u)

}

這會(huì)產(chǎn)生您可能正在尋找的輸出。


{1 2} &{4 2} {1 0} {0 0} &{4 2} {4 2} true

我不確定你覺(jué)得什么特別奇怪。C 和 C++ 的行為方式相同。考慮以下:


#include <iostream>


struct Vertex

{

    int x;

    int y;

};


std::ostream& operator<<(std::ostream& out, const Vertex& v)

{

    out << "{ " << v.x << ", " << v.y << " }"; 

    return out;

}


int main()

{

    Vertex v = Vertex{1, 2};

    Vertex* q = &v;

    Vertex t = *q;

    q->x = 4;

    std::cout << "*q: " << *q << "\n";

    std::cout << " t: " << t << "\n";

}

此 C++ 代碼的輸出顯示了相同的行為:


*q: { 4, 2 }  

t: { 1, 2 }


查看完整回答
反對(duì) 回復(fù) 2021-08-30
  • 1 回答
  • 0 關(guān)注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)