golang panic 不打印参数地址怎么办,是三个点

2020-07-17 20:06:16 +08:00
 sunshinev
2020/07/17 20:01:56 0xc0000721e0 1
panic: wtf

goroutine 1 [running]:
main.run(...)
	/www/xx/go/test/main.go:18
main.main()
	/www/xx/go/test/main.go:13 +0xd0

Process finished with exit code 2

为什么 run 里面是...

代码如下:

func main() {
	a := "1"
	run(a)
}

func run(a string) {
	log.Println(a)
	panic("wtf")
}

1446 次点击
所在节点    程序员
1 条回复
katsusan
2020-07-17 22:11:50 +08:00
run 函数被内联了,可以在编译时加入-gcflags "-l"禁止内联。

➜ /tmp go build -gcflags "-m" panic.go
# command-line-arguments
./panic.go:10:6: can inline run
./panic.go:5:6: can inline main
./panic.go:7:5: inlining call to run
./panic.go:7:5: main ... argument does not escape
./panic.go:7:5: a escapes to heap
./panic.go:10:10: leaking param: a
./panic.go:11:13: run ... argument does not escape
./panic.go:11:13: a escapes to heap

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/690981

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX