1 回答
TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
您需要了解指針是什么,以便了解這里發(fā)生了什么。指針包含另一個(gè)變量的地址。
這兩種類型的接收器不同,一種(指針)需要地址,另一種(值)期望不是地址。
現(xiàn)在,回答你的第一個(gè)問(wèn)題:“為什么結(jié)果是一樣的?
首先,是指向 的指針。這意味著 中包含的內(nèi)容是 的地址。因此,兩者最終都引用相同的結(jié)構(gòu)(直接包含它和指向它的地址)。所以最后它是同一個(gè)結(jié)構(gòu)。rprrprrrprrp
此外,原因和可以與指針和值接收器一起使用的原因是:Go在調(diào)用時(shí)自動(dòng)獲取包含在地址中的內(nèi)容(作為值接收器需要不是地址),并且它會(huì)自動(dòng)獲取用于調(diào)用時(shí)傳遞的地址(作為指針接收器需要一個(gè)地址)。rrprpperim()rarea()
回答你的第二個(gè)問(wèn)題:“這是什么意思...?
要理解這一點(diǎn),您需要知道 Go 中的所有函數(shù)都使用按值傳遞。這意味著,當(dāng)您將具有許多字段的結(jié)構(gòu)傳遞給函數(shù)時(shí),整個(gè)結(jié)構(gòu)及其所有字段將被復(fù)制到要在函數(shù)內(nèi)部使用的新變量中。但是,如果傳遞指針(具有許多字段的結(jié)構(gòu)的地址),則僅將該地址復(fù)制到要在函數(shù)內(nèi)部使用的變量中 - 這大大減少了復(fù)制。
- 1 回答
- 0 關(guān)注
- 102 瀏覽
添加回答
舉報(bào)
