亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 232 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號