为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 投射多个返回值以匹配命名的结果参数

Golang 投射多个返回值以匹配命名的结果参数

Go
Cats萌萌 2021-07-10 18:11:52
假设我想定义一个带有命名结果参数的函数,其中一个是string. 此函数在内部调用另一个函数,该函数返回此类字符串的字节表示。有没有办法在不使用临时变量的情况下转换结果?func main() {    out, _ := bar("Example")    fmt.Println(out)}func foo(s string) ([]byte, error) {    return []byte(s), nil}func bar(in string) (out string, err error) {    // is there a way to assign the result to out    // casting the value to string in the same line    // istead of using the tmp variable?    tmp, err := foo(in)    if err != nil {        return "", err    }    return string(tmp), nil}这个想法是,如果可能的话,我可以将代码缩短为func bar(in string) (out string, err error) {    // assuming there is a way to cast out to string    out, err := foo(in)    return}是否有意义?
查看完整描述

2 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

1 行代码不会产生很大的不同,但是让一个tmp变量实际存在于整个函数中是一个问题。显然,临时变量应该是临时的。为此,您可以tmp在新范围内声明。


var s string;

{

    tmp, err := foo(in)

    s = string(tmp)

}


//tmp no longer exists here.

//Other code is not disturbed by a useless tmp variable.

我可能只是在这里很愚蠢,因为我是 Golang 的新手,我从 C 中学到了这个技巧,结果它也适用于 Golang。


查看完整回答
反对 回复 2021-07-12
  • 2 回答
  • 0 关注
  • 197 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信