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

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

將指針或副本的參數(shù)傳遞給函數(shù)

將指針或副本的參數(shù)傳遞給函數(shù)

Go
湖上湖 2021-10-11 10:49:01
我正在考慮 Go 指針,通過值或引用將變量作為參數(shù)傳遞給函數(shù)。在一本書中,我遇到了一個(gè)很好的例子,它是下面的第一個(gè)代碼片段,關(guān)于傳遞一個(gè)指針。第一個(gè)版本按預(yù)期工作,在采用指針參數(shù)的函數(shù)中,對變量本身進(jìn)行更改,而不是對其副本進(jìn)行更改。但是下面的第二個(gè)例子我正在修改它的副本。我認(rèn)為它們的行為應(yīng)該相同,第二個(gè)用于處理作為參數(shù)傳遞的變量,而不是它的副本。本質(zhì)上,這兩個(gè)版本的函數(shù)有什么不同?書中的版本,通過引用傳遞參數(shù):package mainimport (    "fmt")// simple function to add 1 to afunc add1(a *int) int {    *a = *a+1 // we changed value of a    return *a // return new value of a}func main() {    x := 3    fmt.Println("x = ", x)  // should print "x = 3"    x1 := add1(&x)  // call add1(&x) pass memory address of x    fmt.Println("x+1 = ", x1) // should print "x+1 = 4"    fmt.Println("x = ", x)    // should print "x = 4"}我的替代修補(bǔ)版本,傳遞指針參數(shù):package mainimport (    "fmt")// simple function to add 1 to afunc add1(a int) int {    p := &a    *p = *p+1 // we changed value of a    return *p // return new value of a}func main(){    fmt.Println("this is my go playground.")        x := 3        fmt.Println("x = ", x)  // should print "x = 3"        x1 := add1(x)  // call add1(&x) pass memory address of x        fmt.Println("x+1 = ", x1) // should print "x+1 = 4"        fmt.Println("x = ", x)    // should print "x = 4"   }
查看完整描述

2 回答

?
慕婉清6462132

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

為什么他們的行為應(yīng)該相同?在第一個(gè)示例中,您傳遞了一個(gè)指針 (to int),在第二個(gè)示例中,您傳遞了一個(gè)int值。

在第二個(gè)示例中發(fā)生的事情是您傳遞了一個(gè)int值。函數(shù)中的參數(shù)像局部變量一樣工作。將創(chuàng)建一個(gè)名為atype 的局部變量int,并將使用您傳遞的值(3即 的值x)進(jìn)行初始化。這個(gè)局部變量像任何其他變量一樣是可尋址的。

您獲取它的地址 ( p := &a) 并增加此指針指向的值(它a本身是變量)。然后你返回它指向的值,它是a.

在您調(diào)用此add1()函數(shù)的位置之外,x未修改的值,因?yàn)閮H修改了本地副本a。


查看完整回答
反對 回復(fù) 2021-10-11
?
holdtom

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

中的所有內(nèi)容golang都是pass by value,這意味著該函數(shù)始終獲取正在傳遞的事物的副本。在您的第二個(gè)示例中, 的值x實(shí)際上發(fā)送到了 function add,因此您對副本所做的任何修改都不會影響原始x.



查看完整回答
反對 回復(fù) 2021-10-11
  • 2 回答
  • 0 關(guān)注
  • 189 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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