首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有接口{}和类型断言的多个返回类型(在Go中)

具有接口{}和类型断言的多个返回类型(在Go中)
EN

Stack Overflow用户
提问于 2011-08-13 04:18:59
回答 1查看 5.7K关注 0票数 7

我想知道调用具有多个返回值的函数的正确语法是什么,其中一个(或多个)返回值的类型为interface{}

可以像这样调用返回interface{}的函数:

代码语言:javascript
复制
foobar, ok := myfunc().(string)
if ok { fmt.Println(foobar) }

但以下代码失败,并显示错误multiple-value foobar() in single-value context

代码语言:javascript
复制
func foobar()(interface{}, string) {
    return "foo", "bar"
}


func main() {
    a, b, ok := foobar().(string)
    if ok {
        fmt.Printf(a + " " + b + "\n") // This line fails
    }
}

那么,正确的调用约定是什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-13 05:36:13

代码语言:javascript
复制
package main

import "fmt"

func foobar() (interface{}, string) {
    return "foo", "bar"
}

func main() {
    a, b := foobar()
    if a, ok := a.(string); ok {
        fmt.Printf(a + " " + b + "\n")
    }
}

您只能将type assertion应用于单个表达式。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7045848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档