十.Go構造struct

1717 ワード

こうぞうstruct
  • GoのstructはCのstructと似ており、goにはclass
  • はありません.
  • type構造名struct{}を使用して構造を定義し、名前は可視性ルール
  • に従う.
  • は、自身へのポインタタイプメンバー
  • をサポートする.
  • は匿名構造をサポートし、メンバーまたは定義メンバー変数
  • として使用できます.
  • は、字面値を用いる構造を初期化することができる
  • .
  • は、ポインタによって構造メンバー
  • を直接読み書きすることを可能にする.
  • 同じタイプのメンバーは、ダイレクトコピー付与
  • を行うことができる.
  • サポート=および!=比較演算子、<>
  • はサポートされていません
  • は匿名フィールドをサポートし、本質的にはileがあるタイプ名のフィールド
  • を定義する
  • 埋め込み構造は匿名フィールドとして継承するように見えるが、
  • を継承するものではない.
  • 匿名フィールドポインタ
  • を使用することができる.
    package main
    import (
        "fmt"
    )
    type animal struct {
        Name string
        Age  int
    }
    type cat struct {
        animal
        Legs  int
        Sound string
    }
    type dog struct {
        animal
        Age int
    }
    type unknow struct {
        Name    string
        Details struct {
            Age, Country string
        }
    }
    func main() {
        c1 := &cat{Legs: 4, Sound: " ", animal: animal{Name: "Tom", Age: 2}}
        fmt.Println(c1)
        modifyCat(c1)
        fmt.Println(c1)
        c2 := &struct {
            Name string
            Age  int
        }{
            Name: "   ",
            Age:  22,
        }
        fmt.Println(c2)
        u1 := &unknow{Name: "   "}
        u1.Details.Age = "111"
        u1.Details.Country = "  "
        fmt.Println(u1)
        d1 := &dog{}
        d1.animal.Name = "  "
        d1.Age = 6
        d1.animal.Age = 10
        fmt.Println(d1)
        d2 := &dog{animal: animal{Name: "  Tom", Age: 12}, Age: 9}
        fmt.Println(d2)
    }
    func modifyCat(mCat *cat) {
        mCat.Name = "Jerry"
        mCat.Age = 1
        mCat.Legs = 5
        mCat.Sound = "  "
    }
    

    直通車
    一.Go開発ツールおよびコマンド2.Goプログラミングの基礎知識3.Goのタイプと変数4.Go定数と演算子5.Go制御文6.Go配列7.Goスライスslice 8.Goハッシュ辞書map 9.Go関数func 10.Go構造struct