2 回答
TA贡献1799条经验 获得超6个赞
您应该使用将 &int 传递给zeroptr,如本例所示:
package main
import "fmt"
func zeroptr(ptr *int) {
*ptr = 0
}
func main() {
var ptr int
ptr = 1
fmt.Println("ptr is :", ptr)
zeroptr(&ptr)
fmt.Println("after calling zeroptr, the value of ptr is :", ptr)
}
输出:
ptr is : 1
after calling zeroptr, the value of ptr is : 0
您可以在golang 书中的“在 Go 中使用指针有什么意义? ”中看到类似的示例。
TA贡献1934条经验 获得超2个赞
你的指针指向什么?为了操作指针指向的内存,您首先需要将指针指向某处。现在,您ptr指向的nil是无效的。例如,您可以这样做:
func main() {
var foo int
var oneptr *int = &foo
*oneptr = 1
fmt.Println("oneptr is :", *oneptr)
zeroptr(oneptr)
fmt.Println("after calling zeroptr, the value of oneptr is :", *ptr)
}
为了将来,请在提交代码之前缩进您的代码。您可以使用该gofmt程序执行此操作。
- 2 回答
- 0 关注
- 171 浏览
添加回答
举报