【发布时间】:2020-03-04 20:46:10
【问题描述】:
我正在尝试创建一个新结构并将其原始值用作新结构的成员。但是,它们最终都是相同的引用(即payload 和payload.prev),它会导致我的代码中的无限递归。感谢任何帮助或提示。
package main
type Sieve struct {
prime int
prev *Sieve
}
func Test(payload *Sieve, n int) {
if payload.prime*(n/payload.prime) == n {
} else if payload.prev == nil {
println(n)
// payload and payload.prev end up being the same reference
// and it causes infinite loop
*payload = Sieve{
prime: n,
prev: payload,
}
} else {
Test(payload.prev, n)
}
}
func main() {
var p = Sieve{
prev: nil,
prime: 2,
}
println(2)
for i := 2; i < 10; i++ {
Test(&p, i)
}
}
【问题讨论】:
标签: pointers go recursion struct