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

Golangのvolatile関数

Golangのvolatile関数

Go の可変長関数を使用すると、関数に可変数の引数を渡すことができます。 Golang の volatile 関数について知っておくべきことはすべてここにあります。

Golang の名前付き戻りパラメータ

Golang の名前付き戻りパラメータ

Golang では、名前付き戻りパラメータは、名前付きパラメータと呼ばれることがよくあります。 Golang では、関数のシグネチャまたは定義内で関数の戻りパラメータまたは結果に名前を付けることができます。

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 つ以上作成できますが、これらのメソッドのレシーバーは異なる型である必要があります。

Apple Watchが妊娠中の心臓専門医の命を救った

Apple Watchが妊娠中の心臓専門医の命を救った

小児心臓専門医が声を上げ、女性のApple Watchが医師の診察を受けるようアドバイスしたため、緊急帝王切開を行わざるを得なかったと説明した。

今は Nintendo Switch を買わないで、Switch 2 を待ってください!

今は Nintendo Switch を買わないで、Switch 2 を待ってください!

Nintendo Switch は素晴らしいゲーム機であり、数多くの素晴らしい Switch ゲームから選ぶことができます。しかし、まだ購入するかどうか迷っているのであれば、あなたの懸念は正当なものです。

ペイントでSnipping Toolを使って写真を編集する方法

ペイントでSnipping Toolを使って写真を編集する方法

Snipping Tool を使用してスクリーンショットを撮り、さらに編集したい場合は、Snipping Tool からペイントでスクリーンショットを編集できます。

Zoom通話で画像と音声を改善するための5つのヒント

Zoom通話で画像と音声を改善するための5つのヒント

ハードウェアの品質は見た目をよりプロフェッショナルなものにしますが、少し変更するだけで誰でもそれを実現できます。

Thien Cung DTCLシーズン11ラインナップ、最新のThien Cung TFTラインナップ

Thien Cung DTCLシーズン11ラインナップ、最新のThien Cung TFTラインナップ

Thien Cung DTCL も、タンクとメインの将軍が揃っているときにはプレイが非常に簡単です。今回は、Soraka が味方の体力を強化する将軍ではなく、完全にダメージを与える将軍になります。

Homicipher PCをダウンロード、ダウンロードとプレイ方法

Homicipher PCをダウンロード、ダウンロードとプレイ方法

Homiciper は、時間の経過とともに暗闇と絶え間ない恐怖に満ちた奇妙な場所にプレイヤーを連れて行くゲームです。

AMD Ryzen Master が Threadripper および Ryzen 第 1 世代および第 2 世代 CPU のサポートを終了、ユーザーはご注意ください!

AMD Ryzen Master が Threadripper および Ryzen 第 1 世代および第 2 世代 CPU のサポートを終了、ユーザーはご注意ください!

先月、AMD は Ryzen および Threadripper ブランドのプロセッサの調整とオーバークロックを支援するアプリケーションである Ryzen Master の新バージョンをリリースしました。

ガソリンタンクが爆弾のように爆発する理由

ガソリンタンクが爆弾のように爆発する理由

日常のちょっとした調理ミスでも、ガソリンタンクが爆弾のように爆発する可能性があります。

最新のPixel Tower Defenseコードとコードの利用方法

最新のPixel Tower Defenseコードとコードの利用方法

Code Pixel Tower Defense は、基地の防衛時に優位性をもたらし、ユニットを最高の防御状態に保ちます。

最新のVan Tien Tranコードと入力方法

最新のVan Tien Tranコードと入力方法

Code Van Tien Tran は、他の多くのモバイル ゲームと同様に、新規プレイヤーがサポート報酬を受け取るのに役立ちます。報酬には、シルバー、期間限定の経験値ブースト、召喚チケット、レア装備の宝箱などが含まれます...

Genshin Impactのチャージ方法、Genshin Impactのチャージ方法

Genshin Impactのチャージ方法、Genshin Impactのチャージ方法

Genshin Impact をチャージする方法、Genshin Impact Genesis Stones をチャージする方法を探している場合は、この記事の手順を参照してください。

ビットコインはまもなく史上初めて9万ドルを超える可能性がある

ビットコインはまもなく史上初めて9万ドルを超える可能性がある

市場分析会社ポリマーケットの予測によると、調査対象となった暗号通貨投資家の94%が、ビットコインの価値が今年11月に9万ドルに達すると予想している。

YouTubeはAIが作成した音楽リミックスをテストしている

YouTubeはAIが作成した音楽リミックスをテストしている

YouTube は、クリエイターが AI を使ってライセンスされた曲のスタイルを短編映画用にリミックスできる新機能をテストしている。

Apple、2025年にスマートホーム制御デバイスを発売へ

Apple、2025年にスマートホーム制御デバイスを発売へ

Appleはスマートホームハードウェア市場で大きな成功を収める計画を​​立てている。ブルームバーグのマーク・ガーマン氏が近々発売されるホームハブの詳細を明らかにしたが、非常に期待が持てる内容だ。

アノラ映画とより良い人生のための感動的な教訓

アノラ映画とより良い人生のための感動的な教訓

映画『アノラ』は2025年のアカデミー賞で5つの賞を受賞した。他のシンデレラ映画とは異なり、「アノラ」は非常に現実的な物語を語り、観客に深く考える価値のある多くの人生教訓を与えます。