ホームページ  >  記事  >  バックエンド開発  >  golangで複数の型を1つの型として定義する方法

golangで複数の型を1つの型として定義する方法

WBOY
WBOY転載
2024-02-09 10:03:19601ブラウズ

golangで複数の型を1つの型として定義する方法

golang では、データをより柔軟に処理するために、複数の型を 1 つの型として定義する必要がある場合があります。この問題に対して、PHP エディター Xinyi が解決策を皆さんに提供します。インターフェイス型を使用すると、複数の異なる型を 1 つの型として定義できます。インターフェイス タイプは、特定の実装を指定せずにメソッドのセットを定義できます。このようにして、このインターフェイスを複数の型に対して実装し、このインターフェイス型を使用して統合された操作と処理を行うことができます。このアプローチにより、コード構造が簡素化されるだけでなく、コードの可読性と保守性も向上します。続いて、具体的な導入手順を見ていきましょう!

質問内容

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)」が許可されていないため、上記のコードはコンパイルできません。 (String, Error) を型として定義できますか?それとももっと良い方法があるでしょうか? (構造体は使えますか?) のように : typereasonanderror(String, Error)

回避策

(String, Error) を型として定義できますか?

いいえ、この構文は使用されません。 go にはタプルがありません。

(構造体は使用できますか?) たとえば、「reasonanderror (string, error)」と入力します。

はい、構造体の型を宣言して使用します。構造体の型を宣言する構文は次のとおりです。

リーリー

次に、それを使用するには、次の操作を行います:

リーリー

以上がgolangで複数の型を1つの型として定義する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。