golang を使用してインターフェイスと構造を変換する

WBOY
リリース: 2024-04-08 10:30:01
オリジナル
1082 人が閲覧しました

Go 言語では、アサーションを使用してインターフェイスの変換と構造の変換を完了できます。インターフェイス変換には、あるインターフェイス タイプから別のインターフェイス タイプに値を変換するために使用されるタイプ アサーションと値アサーションが含まれます。構造変換は、ある構造を別の構造に変換するために使用されます。

golang を使用してインターフェイスと構造を変換する

Go でアサーションを使用してインターフェイスと構造の変換を実装する

Go のインターフェイスは、さまざまな変換を可能にするメソッドのコレクションです。基礎となるタイプの値がそれらを実装します。インターフェイス変換を使用すると、値をあるインターフェイス タイプから別のインターフェイス タイプに変換できます。

構造体は、関連するデータ フィールドのコレクションです。場合によっては、ある構造を別の構造に変換したい場合があります。これはアサーションを使用して実行できます。

インターフェイス変換

あるインターフェイス タイプから別のインターフェイス タイプに値を変換するには、アサーションを使用できます。アサーションには 2 つの形式があります。

  • Type アサーション : このアサーションは、値が特定のインターフェイス タイプを実装しているかどうかをチェックします。
  • 値アサーション: このアサーションは、そのインターフェイスが実装されていない場合でも、特定のインターフェイス タイプに値をキャストします。

次の例は、型アサーションの使用方法を示しています。

package main

import "fmt"

type Animal interface {
    Speak() string
}

type Dog struct {}
func (d Dog) Speak() string { return "Woof!" }

type Cat struct {}
func (c Cat) Speak() string { return "Meow!"}

func main() {
    var animals []Animal
    animals = append(animals, Dog{}, Cat{})

    for _, animal := range animals {
        if dog, ok := animal.(Dog); ok {
            fmt.Println("Dog says:", dog.Speak())
        } else if cat, ok := animal.(Cat); ok {
            fmt.Println("Cat says:", cat.Speak())
        }
    }
}
ログイン後にコピー

構造変換

ある構造を別の構造に変換するには、次のようにします。主張。次の例は、アサーションの使用方法を示しています。

以上がgolang を使用してインターフェイスと構造を変換するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート