オブジェクト指向プログラミングアプリケーションを行きます

####オブジェクト指向プログラミングの適用を行く
、実際に小さなケースを書くために、このセクションの基礎を学習の多くの前に:
:に関連する知識
アレイ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()
}

  最新の記事を公開しますパーソナルマイクロチャンネル公衆数は、一緒に学習の交換に焦点を歓迎しました

おすすめ

転載: www.cnblogs.com/Mail-maomao/p/11458983.html