首頁 > 後端開發 > Golang > 主體

如何在golang中將多種類型定義為一種類型

WBOY
發布: 2024-02-09 10:03:19
轉載
600 人瀏覽過

如何在golang中將多種類型定義為一種類型

在golang中,有時我們需要將多種類型定義為一種類型,以便更靈活地處理資料。對於這個問題,php小編新一為大家帶來了解決方案。透過使用介面類型(interface),我們可以實現將多個不同的類型定義為一種類型的目的。介面類型可以定義一組方法的集合,而不需要指定特定的實作。這樣,我們就可以將多種類型都實作該接口,然後使用該接口類型進行統一的操作和處理。這種方式不僅簡化了程式碼結構,還提高了程式碼的可讀性和可維護性。接下來,讓我們來看看具體的實作步驟吧!

問題內容

func GetFailedReasonAndErr (xxx) (string, error){
...
}

func AnyFailed (args ...(string, error)) {
   for _, arg := range args {
      if arg.error != nil {
         return arg
       }
   }
}

func main () {
    reason, err := AnyFailed(GetFailedReasonAndErr(yyy), GetFailedReasonAndErr(zzz))
    println(reason, err)
}
登入後複製

上面的程式碼無法編譯,因為不允許「args ...(string, error)」。 我可以將(字串,錯誤)定義為一種類型嗎?或任何更好的方法? (可以使用結構?) 喜歡 : 類型reasonanderror(字串,錯誤)

解決方法

我可以將(字串,錯誤)定義為一種類型嗎?

不,不使用該語法。 go 沒有元組。

(可以使用結構體?)例如:type reasonanderror (string, error)

是的,聲明一個結構類型並使用它。聲明結構類型的語法如下:

type reasonanderror struct {
    reason string
    err    error
}
登入後複製

然後,要使用它,您可以執行以下操作:

func GetFailedReasonAndErr(xxx) reasonAndError {
    // ...
}

func AnyFailed(args ...reasonAndError) (string, error) {
   for _, arg := range args {
      if arg.err != nil {
         return arg.reason, arg.err
       }
   }
   return "", nil
}

func main () {
    reason, err := AnyFailed(GetFailedReasonAndErr(yyy), GetFailedReasonAndErr(zzz))
    println(reason, err)
}
登入後複製

以上是如何在golang中將多種類型定義為一種類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!