Golang の匿名構造体とフィールド

Golangでは、構造体 (または struct) を使用すると、異なるタイプの要素を 1 つの単位にグループ化できるため、現実世界のエンティティをモデル化するのに役立ちます。Golang の匿名構造体は、1 回限りの目的で使用される名前のない一時的な構造体ですが、匿名フィールドでは名前のないフィールドを埋め込むことができます。

Golang の匿名構造体とフィールド

例えば:

package main
import "fmt"

// struct học sinh với cấu trúc và trường ẩn danh
type Student struct {
    struct {    // Cấu trúc bên trong ẩn danh cho thông tin cá nhân
        name string
        enrollment int
    }
    GPA float64  // Trường chuẩn
}

func main() {
    student := Student{
        struct {
            name string
            enrollment int
        }{
            name: "A",
            enrollment: 12345,
        },
        GPA: 3.8,
    }
    fmt.Println("Name:", student.name)
    fmt.Println("Enrollment:", student.enrollment)
    fmt.Println("GPA:", student.GPA)
}

構文:

variable := struct {
    field1 dataType1
    field2 dataType2                                                          # Cấu trúc ẩn danh
    // Trường bổ sung khi cần
}{value1, value2}


type StructName struct {
    dataType1
    dataType2                                                                    # Trường ẩn danh                                        
    // Trường ẩn danh bổ sung
}

Goにおける匿名構造

Go の匿名構造は名前なしで定義され、一時的な使い捨ての構造を作成するのに役立ちます。構文とコード例を次に示します。

構文:

variable := struct {
    field1 dataType1
    field2 dataType2
    // Các trường bổ sung khi cần
}{value1, value2}

例えば:

package main
import "fmt"
// Cấu trúc sinh viên với cấu trúc bên trong ẩn danh cho thông tin cá nhân
type Student struct {
    personalDetails struct { // Cấu trúc ẩn danh bên trong cho thông tin cá nhân
        name       string
        enrollment int
    }
    GPA float64 // Trường chuẩn
}
func main() {
    // Khởi tạo cấu trúc bên trong cho student
    student := Student{
        personalDetails: struct {
            name       string
            enrollment int
        }{
            name:       "A",
            enrollment: 12345,
        },
        GPA: 3.8,
    }
    // Hiện giá trị
    fmt.Println("Name:", student.personalDetails.name)
    fmt.Println("Enrollment:", student.personalDetails.enrollment)
    fmt.Println("GPA:", student.GPA)
}

結果:

Name: A
Enrollment: 12345
GPA: 3.8

このコードは、名前と登録情報を格納する匿名のpersonalDetails構造体を内部に持つStudent構造体を定義します。次に、これらのフィールドの値を使用して学生を初期化し、出力します。

匿名フィールド

Go の匿名フィールドを使用すると、明示的な名前を使用せずにフィールドを定義でき、その型のみが指定されます。これは、フィールドが自然に型名に続く場合に便利です。

構文

type StructName struct {
    dataType1
    dataType2
    // Additional anonymous fields
}

例えば:

package main
import "fmt"

// Cấu trúc học sinh bằng các trường ẩn danh
type Student struct {
    int     // Số đăng ký (trường ẩn danh)
    string  // Tên trường ẩn danh
    float64 // GPA (trường ẩn danh)
}

func main() {
    // Khởi tạo struct học sinh với các trường ẩn danh
    student := Student{12345, "A", 3.8}

    // Hiện giá trị
    fmt.Println("Enrollment:", student.int)
    fmt.Println("Name:", student.string)
    fmt.Println("GPA:", student.float64)
}

結果:

Enrollment: 12345
Name: A
GPA: 3.8

ここでは、データ型(int、string、float64)がフィールド名として機能するため、値へのアクセスは型によって異なります。

Golangの匿名フィールドについて覚えておくべき重要なポイント

1. 固有の要件: 1 つの構造内で同じタイプの 2 つのフィールドを使用することはできません。例えば:

type InvalidStudent struct {
    int
    int // Error: duplicate type
}

2. 名前付きフィールドと匿名フィールドの結合:構造体内で匿名フィールドと名前付きフィールドを組み合わせることができます。

type Student struct {
    id int // Named field
    int    // Anonymous field
}
Sign up and earn $1000 a day ⋙

Leave a Comment

Goのキーワード

Goのキーワード

キーワード - キーワードは、何らかの内部プロセスに使用されるか、何らかの事前定義されたアクションを表す言語の単語です。 Golang のキーワードについて知っておくべきことを以下に示します。

Golangのデータ型

Golangのデータ型

データ型は、有効な Go 変数に格納できるデータの型を指定します。 Go 言語では、型は次の 4 つのカテゴリに分類されます。

Golangの関数の引数

Golangの関数の引数

Go は、引数を渡す方法として、値渡しと参照渡しという 2 つの主な方法をサポートしています。 Go では、デフォルトで値渡しが使用されます。

Golangで複数の値を返す関数

Golangで複数の値を返す関数

Go 言語では、return ステートメントを使用して関数から複数の値を返すことができます。つまり、関数では、 return ステートメントは複数の値を返すことができます。

GoのSwitch文

GoのSwitch文

Golang には他のほとんどのプログラミング言語と同様に switch ステートメントがあります。 Golang で switch ステートメントを使用する方法は次のとおりです。

Golangで選択文を使用する際に知っておくべきケース

Golangで選択文を使用する際に知っておくべきケース

この記事では、デッドロックを回避するために default case を使用する方法を学習します。しかし、まず、Golang の select コマンドを使用するときにデッドロックが発生するケースが何であるかを確認しましょう。

GolangでRuneを使う方法

GolangでRuneを使う方法

Golang におけるルーン文字とは何ですか? Golang で Rune を使用するにはどうすればいいですか?この記事でその答えがわかります。

Golangで演算子を使う方法

Golangで演算子を使う方法

演算子を使用すると、オペランドに対してさまざまな種類の演算を実行できます。 Go 言語では、演算子はさまざまな機能に基づいて分類できます。

Golang の void 識別子

Golang の void 識別子

Golang では _(アンダースコア) は空白識別子と呼ばれます。識別子は、識別目的で使用されるプログラム コンポーネントのユーザー定義名です。

Golangで基本的なプログラムを作成する方法

Golangで基本的なプログラムを作成する方法

こんにちは世界!あらゆるプログラミング言語における最初の基本プログラムです。この最初のプログラムは、以下の手順に従って Golang で記述できます。

WindowsにGoをインストールする方法

WindowsにGoをインストールする方法

Golang は Windows に簡単にインストールできます。以下は、Windows に Golang をインストールするための詳細なステップバイステップ ガイドです。

Golangにおける同じ名前のメソッド

Golangにおける同じ名前のメソッド

Golang では、同じパッケージ内に同じ名前のメソッドを 2 つ以上作成できますが、これらのメソッドのレシーバーは異なる型である必要があります。

Goにおける変数のスコープ

Goにおける変数のスコープ

Golang における変数のスコープは、その変数にアクセスできるプログラムの部分を決定します。 Go では、すべての識別子にはコンパイル時に決定される語彙スコープがあります。

Golang の制御文 (if、if-else、Nested-if)

Golang の制御文 (if、if-else、Nested-if)

Golang にはどのような条件文がありますか? Go プログラミングで条件文を使用するにはどうすればよいでしょうか?一緒に調べてみましょう!

ユーザーはまもなくInstagramのスレッドにコメントが表示されるようになる

ユーザーはまもなくInstagramのスレッドにコメントが表示されるようになる

メタのソーシャルメディアアプリを定期的に分析して今後の機能を探しているアレッサンドロ・パルッツィ氏によると、インスタグラムは他のインスタグラムの投稿へのコメントをスレッドで共有する機能を展開する可能性があるという。

ユーザーがApple Intelligenceに望む機能のリスト

ユーザーがApple Intelligenceに望む機能のリスト

Apple Intelligence のリリースは多くの人を興奮させていますが、まだ改善の余地があります。 Apple は、これをさらに改善するためにいくつかの機能を追加することができます。

Facebook のメッセージ統計で、Facebook で最も多くのメッセージを送信しているユーザーを確認できます

Facebook のメッセージ統計で、Facebook で最も多くのメッセージを送信しているユーザーを確認できます

Facebook Messengerは現在最も使用されているメッセージング アプリですが、誰があなたに最も多くメッセージを送信しているかご存知ですか?以下の記事では、Messenger で誰が最も多くテキストメッセージを送信しているかを確認する方法を読者に紹介します。

レンズぼかしが芸術的な写真編集に使用される Photoshop ツールなのはなぜですか?

レンズぼかしが芸術的な写真編集に使用される Photoshop ツールなのはなぜですか?

Adobe のレンズぼかしツールを使用すると、写真を簡単に確認して、写真に深みとフォーカスを加えることができます。

Apple Podcastを直接翻訳する方法

Apple Podcastを直接翻訳する方法

iOS 17.4 では、Apple Podcasts にライブ翻訳が追加されます。聴いているポッドキャストのコンテンツに使用する翻訳言語を選択できます。

米企業が50年間連続稼働可能な原子力電池を開発

米企業が50年間連続稼働可能な原子力電池を開発

米国の2社、クロノス・アドバンスト・テクノロジーズとヤシェン・グループは、中国との差を縮めるため、数十年間充電せずに連続稼働できる原子力電池の開発に協力している。

殺人鳥がアフリカの毒ヘビの目をくらませて殺す

殺人鳥がアフリカの毒ヘビの目をくらませて殺す

非常に危険な毒を持っているにもかかわらず、樹上性のヘビは敵の目や頭への「天国の」突き刺しに耐えることしかできない。

ChatGPTはこれらの4種類のウェブサイトを廃止する

ChatGPTはこれらの4種類のウェブサイトを廃止する

AI チャットボットは、ユーザーが Web サイトとやりとりする方法を完全に変え、その過程で一部の種類の Web サイトを時代遅れにしています。

ワンクリックAI写真加工ツールの6つの問題点

ワンクリックAI写真加工ツールの6つの問題点

AI 写真強化ツールは、ワンクリックで画像を改善します。しかし、これらのツールは非常に便利ですが、使用時にはまだいくつかの問題があります。

ジャックス DTCL シーズン8: ビルド、ファイター ジャックスチーム

ジャックス DTCL シーズン8: ビルド、ファイター ジャックスチーム

DTCLシーズン8のジャックスはファイターであるにもかかわらずキャリーであり、彼のスキルは時間の経過とともにダメージを増加させ、それが彼が簡単にキャリーになる主な理由です。

人生がみかんを与えてくれたら:済州島の人生、愛、そして四季の物語

人生がみかんを与えてくれたら:済州島の人生、愛、そして四季の物語

映画『人生にみかんがくれたら』がNetflixで公開されたばかりで、心温まるストーリーでファンの注目を集めている。

ステータス、未来についての良い引用、今後の方向性

ステータス、未来についての良い引用、今後の方向性

以下の将来についてのステータスと将来についての良い引用は、各人が努力するモチベーションを高めるための強力なインスピレーションの源となるでしょう。

折りたたみ式スクリーン搭載スマホのおすすめベスト5

折りたたみ式スクリーン搭載スマホのおすすめベスト5

スマートフォンが発明されて以来、長い間、フラットな携帯電話が唯一の選択肢でした。ただし、飽きてしまい、何か違うものを試してみたい場合は、折りたたみ式の携帯電話を購入することもできます。

Google Pixelスマートフォンで「サイレントモード」を設定する方法

Google Pixelスマートフォンで「サイレントモード」を設定する方法

Google Pixel スマートフォンでサイレントモードを設定する方法は次のとおりです。

XiaomiのMIUI 12で試すべき10の機能

XiaomiのMIUI 12で試すべき10の機能

MIUI 12 を実行している Xiaomi スマートフォンをお持ちの場合、またはこのソフトウェアが提供する機能について興味がある場合、必ず知っておくべき 10 の機能を以下に示します。