ホームページ >バックエンド開発 >Golang >int32 のようなプリミティブ型を Go 構造体に埋め込む必要がありますか?

int32 のようなプリミティブ型を Go 構造体に埋め込む必要がありますか?

DDD
DDDオリジナル
2024-11-27 09:40:12479ブラウズ

Should You Embed Primitive Types Like int32 in Go Structs?

Go でのプリミティブ型の埋め込み: 詳細

カスタム型を構築するとき、int32 などのプリミティブ型を埋め込むという概念に遭遇することがあります。 。この手法は構造体やインターフェイスを埋め込むためによく使用されますが、プリミティブ型を埋め込むと特定の疑問が生じます。

int32 の埋め込みは有用ですか?

いいえ、int32 を直接埋め込むことはできません。通常のフィールドを使用する場合に比べて、すぐに利点が得られるわけではありません。 int32 は、メソッドやフィールドが関連付けられていないプリミティブ型です。

int32 にはユーザー インスタンスにアクセスできるメソッドがありますか?

いいえ、int32 にはメソッドがありません。これは、reflect パッケージを使用して確認できます。

fmt.Println(reflect.TypeOf(int32(0)).NumMethod()) // Prints 0

埋め込まれたプリミティブ型の値へのアクセス

User 構造体の埋め込み int32 値にアクセスするには、フィールドとしての非修飾型名name:

type User struct {
    int32
    Name string
}

u := User{3, "Bob"}
fmt.Println(u.int32) // Prints 3

プリミティブ型の埋め込みの長所と短所

プリミティブ型の埋め込みには直接的な利点はないかもしれませんが、欠点がある可能性があります:

  • int32 などの小文字の名前を持つ埋め込みフィールドは、エクスポートされておらず、宣言したパッケージ内でのみアクセスできます。
  • コードに混乱や不必要な混乱が生じる可能性があります。

したがって、一般に、プリミティブ型を埋め込むことは、そうする具体的な理由 (埋め込み値へのアクセスを必要とするインターフェイスの実装など)。

以上がint32 のようなプリミティブ型を Go 構造体に埋め込む必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。