登录
首页 >  Golang >  Go问答

在 Go 中对多个返回值进行转换/类型断言的惯用方法

来源:Golang技术栈

时间:2023-04-19 12:23:59 146浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《在 Go 中对多个返回值进行转换/类型断言的惯用方法》将会介绍到golang等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

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

您可以在一行中完成,还是需要使用临时变量,例如我在下面的示例中所做的?

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)

正确答案

你不能在一行中做到这一点。您的临时变量方法是可行的方法。

顺便说一句,当涉及到接口时,它是否称为强制转换?

它实际上被称为类型断言。类型 ~~转换~~ 是不同的:

var a int
var b int64

a = 5
b = int64(a)

今天关于《在 Go 中对多个返回值进行转换/类型断言的惯用方法》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表