為什么這個(gè):obj := *g
return &obj, nil不等于這個(gè):return &(*g), nil它不應(yīng)該以相同的方式工作嗎(返回指向新內(nèi)存區(qū)域的指針以及來(lái)自g結(jié)構(gòu)的數(shù)據(jù))?
2 回答

慕尼黑的夜晚無(wú)繁華
TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
在第一個(gè)中,您通過(guò)聲明 obj 來(lái)分配一個(gè)新的內(nèi)存區(qū)域。在第二種情況下,您只需引用 g 處的值,即 g。

慕容森
TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
我不相信這是不一樣的。
package main
import "fmt"
type G struct {
}
func foo(g *G) (*G, error) {
? return &(*g), nil
}
func bar(g *G) (*G, error) {
? obj := (*g)
? return &obj, nil
}
func main() {
? g := &G{}
? a, _ := foo(g)
? b, _ := bar(g)
? fmt.Printf("a: %p, b: %p\n", a, b)? // gives the same pointer value
}
- 2 回答
- 0 關(guān)注
- 151 瀏覽
添加回答
舉報(bào)
0/150
提交
取消