
v1 := Struct{}
v2 := &Struct{}
В чём отличие? Понятно, что во втором случае передается указатель, но когда что нужно использовать?
Struct
и присваивает его переменной v1
. В этом случае переменная v1
будет содержать саму структуру, а не указатель на нее.Struct
с помощью оператора &
, который возвращает указатель на структуру, и присваивает этот указатель переменной v2
. В этом случае переменная v2
будет содержать указатель на структуру, а не саму структуру.type Struct struct {
Value int
}
func main() {
v1 := Struct{} // Создаем структуру
v1.Value = 10 // Изменяем поле Value
v2 := &Struct{} // Создаем указатель на структуру
v2.Value = 20 // Изменяем поле Value через указатель
fmt.Println(v1.Value) // Выводит 10
fmt.Println(v2.Value) // Выводит 20
}
Struct
и изменяем поле Value
сначала через саму структуру, а затем через указатель на структуру. Оба вывода будут отличаться, потому что изменения сделанные через указатель на структуру будут отражаться на самой структуре, в то время как изменения, сделанные через саму структуру, не влияют на указатель на нее.@golang_interview