####オブジェクト指向プログラミングの適用を行く
、実際に小さなケースを書くために、このセクションの基礎を学習の多くの前に:
:に関連する知識
アレイ1の基本的な使用
2.構造
3.スライス
4の方法
5。周期
関数の戻り値6(名前付き戻り値は、戻り値正常)
注意:我々はまた、端末の動作方法は、選択された結合に応じて上記に加え端末からユーザ情報を取得してもよい
---
ケース1:クラス管理システム
1デフォルト3クラス
2.学生がクラス属性名、年齢、持っている
3.学生がクラスに参加することを選択できますが、クラススイッチ
以下のための主要なパッケージ変更 のインポート( 「エラー」 「FMT」 ) //学生情報 タイプstruct学生の{ //名前 名前の文字列 //年齢 年齢のint //クラスの クラス文字列 } //クラス情報 Class型構造体の{ //クラス名の 名前の文字列 クラスのすべての生徒// 学生[]学生。 } //クラスリストの VAR CLASS =クラス{[3] {名: "音楽"}、 {名: "数学"}、 {名: "辞書英語"}、 } / /ディスプレイ学生情報:氏名、年齢、クラスに属し、 FUNC(S *学生)SHOWINFO(){ fmt.Printf( "名:%S、年齢:%のD、クラス:%S \ N-"、s.Name、S .Age、S。クラス) } クラスメソッドの追加// funcを(S *学生)joinClass(クラス文字列を){ //クラスは、クラスの添加前に添加されているかどうかを判断し 、学生のクラスのインスタンスは、任意のクラスを提供することができない場合、//はTODOを初期化 IF s.Class!=「」{ 戻る } のvar ERRエラー クラスのインデックスに追加// VAR classIndex int型 classIndex 、ERR = searchClassByName(クラス)が クラスに参加するかどうかに応じて契約の値を探す// ERRが== nilの{IF 学生のクラスを変更// s.Class =クラス クラスは[classIndex] =アペンド(クラス[classIndex] .Studentsを.Students、 S *) }他{ //追加するクラスが存在しない fmt.Printlnを( "クラスではありませんが存在し、参加できなかった") } } //クラスの生徒トランスデューサ方法 FUNC(Sの*学生)changeClass(Stringクラス){ /最初のチェックは、クラスの前に/変更クラスに既にあります == {クラスs.Class IF fmt.Println( "現在の学生がすでにターゲットクラスに存在する") studentIndex!= 0 {IF リターン } VAR ERRエラー VAR //インデックスint型のクラスインデックス対象の インデックス、ERR = searchClassByName(クラス) IF ERR!= nilの{ //存在しないクラス fmt.Println( "存在しないクラス") のリターンを } / /学生がクラスに新しい学生のリストに追加されます クラス[インデックス] = APPEND(クラス[インデックス] .Students、* S).Students //学生元のクラスのインデックスを oldStudentClassIndex、_:= searchClassByName(s.Class) //検索学生インデックス studentIndex:= searchStudentByName(oldStudentClassIndex、s.Name) //新しいメモリチップの使用 VARを= newStudentsメイク([]学生、0) newStudents =アペンド(CLASS [インデックス] .Students [:studentIndex]、CLASSの[索引] .Students [インデックス+ 1] ...) } CLASSは[oldStudentClassIndex] .Students = newStudents //更新後のクラスに学生の新しいクラスを追加します。 = s.Classクラス } のインデックスを見つけるために、クラスに応じて//クラス名を FUNC searchClassByName(Stringクラス)(int型のインデックス、ERRエラー){ Iのために、ヴァル:レンジクラス= { IF val.Nameクラス== { インデックス=私は 返す } } ERR = errors.New(「クラスが存在していません」) のリターンを } 学生の名前と学生のインデックスクラスのインデックスを探す// //これを情報生徒のクラス名から取得することにより機能し、クラス名でクラスインデックスので、エラーなしでこの機能を見つける IF val.Name名は== { //見つける学生 呼び出しは、上記されていない場合は、// TODOシーンはエラーを持っている必要があります {searchStudentByName FUNC(INTクラス、文字列名)(INTインデックス) I、ヴァルのために:範囲= CLASS [クラス] .Students { インデックス= I } } リターン } //すべてのクラスに関する情報を表示 FUNC showClassInfo(){ _ため、ヴァル:範囲=クラス{ fmt.Println( "現在のクラス:"、val.Name) _ため、STU:=レンジval.Students { fmt.Println( "現在の学生のクラス:"、STU) } } } //学生の初期化 FUNC newStudent(文字列名、int型の年齢を){学生 S:= {学生 名:名前、 年齢:年齢、 } リターンS } FUNCメイン(){ //暁明は、音楽を追加しました VAR暁明学生 暁明= newStudent( "暁明"、20) xiaoJiaを:=学生{ xiaoMing.joinClass( "音楽") xiaoMing.showInfo() // xiaoHu加入音楽 VAR xiaoHu学生 xiaoHu = newStudent( "xiaoHu"、18) xiaoHu.joinClass( "音楽") xiaoHu.showInfo() // xiaoHong加入数学 VAR xiaoHong学生 xiaoHong.Name = "xiaoHong" xiaoHong.Age = 22 xiaoHong.joinClass( "数学") xiaoHong.showInfo() // xiaoHua加入英語 xiaoHua:= {生徒 名: "xiaoHua"、 年齢:23、 } xiaoHua.joinClass( "英語") xiaoHua.showInfo() // xiaoJia加入不存在的班级塗料 名: "xiaoJia"、 年齢:21、 } xiaoJia.joinClass(」ペイント」) xiaoJia.showInfo() showClassInfo() fmt.Println( "xiaoHu変更クラス数学") xiaoHu.changeClass( "数学") showClassInfo() xiaoHu.showInfo() fmt.Println( "xiaoHua変更クラス数学") xiaoHua.changeClass ( "数学") showClassInfo() xiaoHua.showInfo() }
最新の記事を公開しますパーソナルマイクロチャンネル公衆数は、一緒に学習の交換に焦点を歓迎しました