本体1のオブジェクト指向の構造

Golangオブジェクト指向プログラミング言語の説明:

  1)Golangは、オブジェクト指向プログラミング(OOP)が、従来のオブジェクト指向のプログラミングおよび分化ではなく、純粋なオブジェクト指向言語をサポートしています。だから我々はGolangサポートオブジェクト指向プログラミング機能は、より正確であると言います。

  2)Golangなしクラス(クラス)、ゴー言語(構造体)と他のプログラミング言語のクラス(クラスの構造)は、ベース構造体Golang達成されたOOPの機能を理解することができ、同じステータスを持っています。

  3)Golang非常に単純なオブジェクト指向プログラミング、OOP言語メソッドのオーバーロード、コンストラクタとデストラクタの除去伝統、このポインタが同様に隠されます。

  4)Golangはまだオブジェクト指向プログラミングの継承、カプセル化および多型の特性を有していない、そのような継承のような他のOOP言語としてだけで同じではないを達成するための方法:Golangにはキーワードを拡張して、継承が匿名フィールドを介して達成されます。

  また、非常に柔軟である5)Golangオブジェクト指向(OOP)は、非常にエレガントであり、それ自体低い結合を関連インタフェース(インタフェース)により、OOP言語の型システム(タイプ・システム)の一部です。戻るこの機能を完全に理解するだろう。Goalngでその指向プログラミング・インタフェースは、非常に重要な機能です。

 

猫はサポートの質問を見てみましょう。

  おばあちゃん張は2匹の猫を保った:1名は白、3歳、白です。また、スーツ、今年100歳に、小花と呼ばれます。プログラムを書いて、ユーザーは猫の名前を入力したとき、猫は名前、年齢、色が表示されます。ユーザーが入力した子猫間違った名前は、おばあちゃん張だけでなく猫に表示された場合。

解決するために、既存の技術を使用しました:

1)変数の定義は、一人で解決します

FUNCのメイン(){

  1. //プロセス変数
  のvar cat1Name文字列= "白"
  VAR = int型。3 cat1Ageの
  VAR cat1Color文字列= "ホワイト"

  VaRのcat2Name文字列= "小花"
  のvar cat1Age int型= 100
  のvar cat1Color文字列= "花色"
}

2)解決するために、アレイを使用

FUNCのメイン(){

  //配列2.解決
  するvar CATNAMES [2]ストリング= [ ..]ストリング{ " 白"、 "花"}
  VARのcatAges [2] = INT [..] {INT。3、100}
  のvar catColers [2 ]ストリング= [..]ストリング{ " 白"、 "色"}
}

先行技術の成果の分析の短所:

1)ネコの問題を解決するために変数またはアレイを使用して、データの管理と維持に資するものです。名前、年齢、色なので猫に属しているが、ここでは別々に保持されています。

私たちが望む場合は2)猫(名前、年齢、色)操作(結合方法)ではない良い取引を属性。

3)何が==「構造技術を説明するために私をリード

 

構造体と構造体変数(インスタンス/オブジェクト)との関係が模式図です。

 

図の説明:

  1)新しいデータ型を形成するために、例えばネコもの()のクラスから抽出された特徴は、構造体です。

  2)このような構成により、我々は、変数(例えば/オブジェクト)の数を作成することができ

  3)物事が猫することができ、また人、魚やユーティリティクラスすることができます。

はじめに - オブジェクト指向(構造体)の猫の問題を解決するために

パッケージのメイン
インポート(
  「FMT」

//猫の構造を定義する、猫各フィールド/管理猫構造に属性情報を
タイプstruct {カタログ
  名文字列
  年齢INT
  カラー文字
  趣味列
}


FUNCのメイン(){

  //おばあちゃん張は2匹の猫を保った:1名は白、3歳、白です。
  //また、スーツ、今年100歳に、小花と呼ばれます。
  ユーザーは猫の名前を入力したときに//プログラムを書いて、猫の名前が表示され、ある
  //年齢、色。ユーザーが入力した子猫間違った名前場合は、
  //おばあちゃん張は猫だけではないが表示されます。

  //ケースの完了するために、構造体を使用して、
  猫のを//変数を作成します。

  VaRのCAT1猫// VARのint
  cat1.Name = "小白"
  cat1.Age = 3
  cat1.Color = "白色"
  cat1.Hobby = "吃鱼"
  fmt.Println( "CAT1 ="、CAT1)

  fmt.Println( "猫猫的信息如下:")
  fmt.Println( "名前="、cat1.Name)
  fmt.Println( "年齢="、cat1.Age)
  fmt.Println( "色="、CAT1。カラー)
  fmt.Println( "趣味="、cat1.Hobby)
}

構造体と構造体変数(例)とコンタクトとの間の差:

ケースの前面を通って、私たちが見ることができることを説明します。

1)構造は、自己定義のデータ型である事のクラスを表します。

2)可変構造(インスタンス)は、特異的で実用的な、特定の変数を表し


メモリレイアウトの可変構造(例):

 

トラップの構造体の宣言と使用:

構造体を宣言する方法:

タイプ構造名{構造体
  FIELD1タイプ
  フィールド2タイプ
}

例えば:

タイプの学生のstruct {
  名前の文字列の
  年齢のint型
  スコアのfloat32
}

「フィールド/プロパティ

基本的な紹介:

  1)ビューの概念的な点から呼び出さ又はれる:構造=フィールドのフィールド=属性(すなわち教育、統一というフィールド)

  2)フィールドは、構造体の一部、通常、基本データ型、配列、または参照タイプです。例えば、我々は、名前の猫構造文字列がプロパティである以前に定義されました


ノートと詳細な手順:

  変数宣言構文を使用して1)フィールド、例:フィールド名、フィールドタイプ

  2)タイプ・フィールドであってもよい:基本型、配列型または参照

  あなたは構造体変数を作成した後、フィールドに割り当てられていない場合、私は前に言ったように3)、ゼロの値(デフォルト値)、同じルールに対応しています。

    ブール値が偽で、0は整数、文字列「」である
    ようなスコアとして、デフォルトのアレイタイプとそれに関連する要素タイプ[3] [0、0、0]と比較してint型
    ポインタ、スライス、およびゼロをマップ値がnilである、つまり、割り当てられていません。

ケースプレゼンテーション:

パッケージのメイン
インポート(
  「FMT」

//フィールド型構造の場合:ポインタ、スライス、およびゼロ値をマッピングつまり、割り当てられていない、ゼロです
//このフィールドを使用する必要がある場合は、確認する必要があり、使用することができます。

構造体{人が入力
  名前ストリング
  年齢INT
  スコアを[5]のfloat64
  PTRポインタ// INT *
  スライス[] INT //スライス
  MAP1のマップ[文字列]文字列//スライス
}

FUNCのメイン(){

  構造体変数の//定義
  人P1 VAR
  fmt.Println(P1)
  == {ゼロIF p1.ptr
    fmt.Println( "OK1")
  }
  == {ゼロp1.slice IF
    fmt.Println( "OK2")
  }
  ゼロp1.map1 == {IF
    fmt.Println( "OK3")
  }

  //スライスを使用して、再び、メイクなければならない
  p1.slice =メイク([] INT、10)
  p1.slice [0] = 100

  //マップを使用し、それがなければならない最初のメイク
  p1.map1 =メイク(地図[文字列]文字列)
  p1.map1 [ "キー1"] = "トム"
  fmt.Println(P1)
}

4)異なる構造変数のフィールドは互いに独立しており、変数のフィールド構造を変え、他には影響を与えません。

型モンスターのstruct {
  名前の文字列の
  年齢はint
}

FUNCのメイン(){

  monster1モンスターVAR
  monster1.Name = "ブル魔"
  monster1.Age = 500

  monster2:= monster1 //構造体は値型、コピーのデフォルト値である
  monster2.Name =「ティノスポラの罰金」

  fmt.Println( "monster1 ="、monster1)
  fmt.Println( "monster2 ="、monster2)
}

 

おすすめ

転載: www.cnblogs.com/green-frog-2019/p/11408032.html