在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中文網其他相關文章!