在Go中,是否可以对函数的多个返回值执行类型转换?

在Go中,是否可以对函数的多个返回值执行类型转换?,go,Go,在上面的例子中,有可能避免丑陋的“节点(Node)”吗?强制编译器考虑节点A节点而不是int? 没有真正的雅致,是否有更习惯的方式?您可以定义一个中间变量 type Node int node, err := strconv.Atoi(num) Foo(Node(node)) // Foo takes a Node, not an int 或者您可以定义一个包装器函数 n, err := strconv.Atoi(num) node := Node(n) 但我不认为有任何一行的把戏。你这

在上面的例子中,有可能避免丑陋的“节点(Node)”吗?强制编译器考虑节点A节点而不是int?

没有真正的雅致,是否有更习惯的方式?您可以定义一个中间变量

type Node int
node, err := strconv.Atoi(num)

Foo(Node(node))  // Foo takes a Node, not an int
或者您可以定义一个包装器函数

n, err := strconv.Atoi(num)
node := Node(n)

但我不认为有任何一行的把戏。你这样做似乎很好。围棋中仍然有一些口吃。

没有什么真正优雅的东西。您可以定义一个中间变量

type Node int
node, err := strconv.Atoi(num)

Foo(Node(node))  // Foo takes a Node, not an int
或者您可以定义一个包装器函数

n, err := strconv.Atoi(num)
node := Node(n)

但我不认为有任何一行的把戏。你这样做似乎很好。围棋中仍有一些口吃。

否。转换转换为(可转换的)表达式。当函数只有一个返回值时,函数的返回值是一个项(因此可能是一个可转换表达式)。可以找到对符合转换条件的表达式的其他限制。

否。转换将转换(可转换)表达式。当函数只有一个返回值时,函数的返回值是一个项(因此可能是一个可转换表达式)。可以找到对符合转换条件的表达式的附加限制。

我认为上面的包装函数不会编译未使用的
err
的b/c。对,但是原始示例也不是一个完整的工作示例。显然,这两个地方都遗漏了一些东西。我认为上面的包装器函数不会编译未使用的
err
的b/c。对,但是原始示例也不是一个完整的工作示例。显然,这两个地方都漏掉了一些东西。