3 回答

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
您想更新“有效負(fù)載”指針以指向新結(jié)構(gòu)的地址。像這樣構(gòu)造你的新結(jié)構(gòu):
payload = &Sieve{ prime: n, prev: payload, }

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
在覆蓋Sieve指向的結(jié)構(gòu)之前,payload復(fù)制它:
p := *payload
現(xiàn)在您可以分配一個(gè)新的Sieve結(jié)構(gòu)值,將副本的地址存儲(chǔ)為其prev字段:
*payload = Sieve{
prime: n,
prev: &p,
}
通過此更改,您的應(yīng)用程序?qū)⑦\(yùn)行并正確輸出 2 到 10 之間的素?cái)?shù)(在Go Playground上嘗試):
2
3
5
7

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
使用下面的代碼,您不是在創(chuàng)建 的新實(shí)例Sieve,而是將現(xiàn)有的實(shí)例設(shè)置Sieve為指向自身:
*payload = Sieve{
prime: n,
prev: payload,
}
如果你想把payload一層往下推,你可以這樣做:
p:=*payload
*payload = Sieve {
prime: n,
prev: &p}
這將首先分配payloadto的內(nèi)容p,然后將payload內(nèi)容重寫為指向p。
另一方面,如果你想創(chuàng)建一個(gè)新的payload指向舊的,使用:
payload = Sieve {
prime: n,
prev: payload }
然后你必須返回/使用這個(gè)新payload指針。
- 3 回答
- 0 關(guān)注
- 149 瀏覽
添加回答
舉報(bào)