Golang调试模式下出现未定义的~r2变量,其用途与产生原因是什么?
Go调试过程中
~r2变量的相关说明 你遇到的~r开头的变量是Go编译器+Delve调试工具组合下暴露的编译器自动生成内部变量,不属于代码问题:
- 这类变量是编译器为函数返回值预留的临时存储变量,命名规则为
~r加数字序号,序号和当前编译流程中生成的临时变量总数有关。你当前代码里的~r2对应的就是removeElement函数的int类型返回值,你看到的固定值就是函数运行后最终返回的5,和你代码运行输出的结果一致。 - 当你修改代码后,要么函数返回值发生变化,要么编译时临时变量计数逻辑改变,都会导致这个变量的取值或命名变化,属于正常现象。
- 该变量仅在调试阶段可见,不会影响编译后的二进制程序运行逻辑,也不需要你手动维护。如果你不想在调试面板看到这类内部变量,可以在VSCode的Go调试配置文件
launch.json中添加配置项"dlvFlags": ["--only-same-pkg-env"]过滤系统内部变量。
内容的提问来源于stack exchange,提问作者Yashar
相关产品推荐
相关产品推荐

