Pointers Nil指针解引用尝试将指针复制到指针
我的以下代码工作正常:Pointers Nil指针解引用尝试将指针复制到指针,pointers,go,memory,reference,pass-by-reference,Pointers,Go,Memory,Reference,Pass By Reference,我的以下代码工作正常: 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() fm
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)
}
基本上,我模拟bar函数是为了知道函数foo
在运行时传递的参数。现在,假设我想在另一个函数中提取模拟函数的逻辑,我应该怎么做?我尝试了以下操作,但得到了无效的内存地址或零指针解引用
:
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)
}
使用以下命令:
var baz *Type
bar = mockedBar(&baz)
foo()
fmt.Println((*baz).p)
var
表示您将使用给定类型分配以下变量
var t Type
将分配类型的完整大小,例如24字节
var p*Type
将仅为指针本身分配4-8字节
var pp**Type
将分配相同的4-8字节,因为它是相同的指针,但指向另一个指针
要解决这个难题,您必须:
//分配一个对象并获取指向它的指针
p:=&类型{}
/*
它也相当于:
变量t型
p:=&t
*/
//把指针指向指针
pp:=&p
Hi@FooBarBazical欢迎来到Stackoverflow!请花点时间看看这一页。