У меня есть программа Go, которую я использую, чтобы проверить ошибку указателя, которую я имею в гораздо более крупной программе службы http.
У меня есть указатель структуры, которую я хочу передать функции для ее инициализации. Естественно, потому что это указатель, мне не нужно ничего возвращать. Это должно изменить это непосредственно.
Однако, это не то, что здесь происходит.
func main () {
var thing *Thing
ModifyThing(thing)
fmt.Println(thing)
}
func ModifyThing (thing *Thing) {
thing = NewThing()
}
func NewThing () *Thing {
thing := Thing{}
return &thing
}
/// Output: <nil>
Если я использую NewThing()
на своем thing
напрямую, я получу инициализированный указатель. Однако это не работает, когда я передаю указатель на функцию, которая вызывает тот же метод. Память моего thing
не передается так, как я ожидаю?