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)
}