Golang调试显示了一个名为~r2的变量,但我在我的代码中没有定义它。

huangapple go评论84阅读模式
英文:

Golang debug shows a ~r2 variable which I haven't defined in my code

问题

我有一个简单的 Golang 程序,在调试模式下运行时,有一个名为 ~r2 的变量,我没有定义它,也不知道它的用途,除非我在代码内部进行更改,否则该变量的内容是恒定的。

以下是代码:

package main

import "fmt"

func removeElement(nums []int, val int) int {
	if len(nums) > 0 {
		i := 0
		for {
			if nums[i] == val {
				nums = append(nums[:i], nums[i+1:]...)
			} else {
				i++
			}
			if i == len(nums) {
				break
			}
		}
	}
	return len(nums)
}

func main() {
	fmt.Println(removeElement([]int{0, 1, 2, 2, 3, 0, 4, 2}, 2))
}

以下是在 VSCode 的运行和调试中的变量:
Golang调试显示了一个名为~r2的变量,但我在我的代码中没有定义它。

英文:

I have a simple golang program, when I run it in debug mode, there is a ~r2 variable which I haven't defined and I don't know its use case, the content of this variable is constant unless I change something inside the code.

Here is the code:

package main

import "fmt"

func removeElement(nums []int, val int) int {
	if len(nums) > 0 {
		i := 0
		for {
			if nums[i] == val {
				nums = append(nums[:i], nums[i+1:]...)
			} else {
				i++
			}
			if i == len(nums) {
				break
			}
		}
	}
	return len(nums)
}

func main() {
	fmt.Println(removeElement([]int{0, 1, 2, 2, 3, 0, 4, 2}, 2))
}

Here is the variables in the vscode run and debug:
Golang调试显示了一个名为~r2的变量,但我在我的代码中没有定义它。

答案1

得分: 2

~r2变量包含函数的未命名返回值,对于你的情况是一个int类型。如果你有更多的未命名返回值,它们将是~r3...

英文:

The ~r2 variable contains the values of unnamed return values of the function, which in your case an int. If you have more unnamed return values they will be ~r3 ...

huangapple
  • 本文由 发表于 2021年10月25日 16:30:11
  • 转载请务必保留本文链接:https://go.coder-hub.com/69704904.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定