У меня есть следующий фрагмент кода, работающий корректно:
type Type struct {
p string
}
func foo() {
t := Type { p: "hola" }
bar(&t)
}
var bar = func(t *Type) {
t.p = "chau"
}
func Test1() {
var baz *Type
bar = func(t *Type) {
baz = t
}
foo()
fmt.Println(baz.p)
}
По сути, я высмеиваю функцию бара, чтобы узнать параметр, который функция foo
передает при запуске. Теперь предположим, что я хочу извлечь логи c функции пересмешки в другую функцию, как мне это сделать? Я попробовал следующее, но получил invalid memory address or nil pointer dereference
:
func mockedBar(b** Type) func(*Type) {
return func(t *Type) {
*b = t
}
}
func Test2() {
var baz **Type
bar = mockedBar(baz)
foo()
fmt.Println((**baz).p)
}