С помощью приведенного ниже кода вы не создаете новый экземпляр Sieve
, а настраиваете существующий экземпляр Sieve
так, чтобы он указывал на себя:
*payload = Sieve{
prime: n,
prev: payload,
}
Если вы хотите создать пу sh на payload
на один уровень ниже, вы можете сделать это:
p:=*payload
*payload = Sieve {
prime: n,
prev: &p}
Сначала будет назначено содержимое payload
на p
, а затем будет перезаписано содержимое payload
для указания на p
.
С другой стороны, если вы хотите создать новый payload
, указывающий на старый, используйте:
payload = Sieve {
prime: n,
prev: payload }
Затем вы должны вернуть / использовать это новый указатель payload
.