повторное выделение экземпляра структуры с тем же именем переменной возвращает старый объект в golang - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь создать группу экземпляров структуры и добавить в список после установки некоторых значений. Это было повторное использование переменной. Это не сработало, так как оказалось, что golang возвращал тот же объект. Это против того, что я ожидаю. Есть ли обоснование для поведения? Каково решение. Ниже приведен фрагмент кода из goplayground.

package main

import (
    "fmt"
)

type a struct {
I int
}

func main() {
b := new(a)

b.I = 10
fmt.Printf("Hello, playground %v p: %p", b, &b)

b = new(a)
b.I = 12
fmt.Printf(" Hello, playground %v p: %p", b, &b)

}

здесь вывод:

Hello, playground &{10} **p: 0x40c138** Hello, playground &{12} **p: 0x40c138**

1 Ответ

2 голосов
/ 18 февраля 2020

В вашем примере вы печатаете адрес переменной b, а не значение

попробуйте это:

package main

import (
    "fmt"
)

type a struct {
    I int
}

func main() {
    b := &a{}

    b.I = 10
    fmt.Printf("Hello, playground %v p: %p", b, b)

    b = &a{}
    b.I = 12
    fmt.Printf(" Hello, playground %v p: %p", b, b)

}

Hello, playground &{10} p: 0x40e020 Hello, playground &{12} p: 0x40e02c

https://play.golang.org/p/58qP6ggV5K8

...