在围棋中转换多个返回值的惯用方式是什么?

你能在一行中完成吗,或者你需要像我在下面的例子中那样使用临时变量吗?

package main

import "fmt"

func oneRet() interface{} {
    return "Hello"
}

func twoRet() (interface{}, error) {
    return "Hejsan", nil
}

func main() {
    // With one return value, you can simply do this
    str1 := oneRet().(string)
    fmt.Println("String 1: " + str1)

    // It is not as easy with two return values
    //str2, err := twoRet().(string) // Not possible
    // Do I really have to use a temp variable instead?
    temp, err := twoRet()
    str2 := temp.(string)
    fmt.Println("String 2: " + str2 )


    if err != nil {
        panic("unreachable")
    }   
}

顺便问一下,说到接口,它叫casting吗?

i := interface.(int)

推荐答案

你不能一句话就做到.

顺便问一下,当涉及到接口时,它被称为铸造吗?

它实际上被称为type assertion.

var a int
var b int64

a = 5
b = int64(a)

Go相关问答推荐

如何创建两个连接的io.ReadWriteClosers以用于测试目的

Pulumi-S3-当策略依赖于访问点时,如何将AccesspintPolicy附加到访问点

调用API时使用nginx作为反向代理时从nginx获取502坏网关

如何使用Promela建模语言对Golang RWLock进行建模

AWS S3 SelectObjectContent在AWS SDK v2 for Go中不返回结果

在GO中使用泛型类型 struct 实现接口方法

无法使用Segentio;S Kafka-Go连接到融合的Kafka

`docker system df` 与 `/system/df` (docker api 端点)

不接受来自 stdin 的重复输入

如何测试 Zerolog 记录器引发类型错误的日志(log)事件?

如何在正则表达式中使整个单词可选?

错误!在为 age-viewer-go 运行 wails dev 或 wails build 命令时

如何从 Go 中的 `HijackedResponse` 中删除 Cursor Position ANSI 转义码?

go - 仅在函数即将返回错误时清理资源

动态 SQL 集 Golang

CBC Decrypter 解密加密文本,但部分文本被随机字符替换

Go 中的 HTTP 请求验证中间件

Golang grpc go.mod 问题

Golang Echo Labstack 如何在模板视图中调用函数/方法

是否可以使用按位运算在随机 unicode 字符串中找到重复字符?