У меня есть тип структуры с полем *int64
.
type SomeType struct {
SomeField *int64
}
В какой-то момент в моем коде я хочу объявить литерал этого (скажем, когда я знаю, что указанное значение должно быть 0 или указывать на 0, вы знаете, что я имею в виду)
instance := SomeType{
SomeField: &0,
}
... кроме этого не работает
./main.go:xx: cannot use &0 (type *int) as type *int64 in field value
Итак, я пробую это
instance := SomeType{
SomeField: &int64(0),
}
... но это также не работает
./main.go:xx: cannot take the address of int64(0)
Как мне это сделать? Единственное решение, которое я могу придумать, это использовать переменную-заполнителя
var placeholder int64
placeholder = 0
instance := SomeType{
SomeField: &placeholder,
}
Примечание: синтаксис Изменить: нет, это не так. Извините.&0
отлично работает, когда он * int вместо *int64
.
Edit:
По-видимому, в моем вопросе была слишком большая двусмысленность. Я ищу способ буквально указать *int64
. Это может быть использовано внутри конструктора или для указания литеральных значений структуры или даже в качестве аргументов для других функций. Но вспомогательные функции или использование другого типа не являются решениями, которые я ищу.