GO-関数インタフェース

Javaでは、すべてがオブジェクト、GOで、すべてのタイプがあります。
使用FUNCを型に変換されなければならない前に、2;第FUNC定義型として、1:関数funcは、またタイプ、特別なほんの少しです。

funcがタイプを定義し、関数インタフェースのために、インターフェイスを実装している場合。
例えば、英語で自己紹介をするには、次の学生。


主パッケージ

のインポート「FMT」は
//自己紹介のためのインタフェース定義
型インタフェース導入{ 
    言う(文字列名、int型の年齢
} 

すべてのパラメータストリングに続く// introduceFunc定義型を、int型と空の関数を返しますタイプであるintroduceFuncの
タイプintroduceFunc FUNC(文字列名、int型の年齢
 //実装introduceFunc型インタフェースは導入 (文字列名、int型の年齢言うFUNC(introduceFunc F)で){  F(名前、年齢) } 
 自己中国語で、関数chineseSay //パラメータ文字列に続いて導入、int型とはとてもintroduceFuncタイプで、空を返し FUNC chineseSay(文字列名、int型の年齢){fmt.Printf(「こんにちは誰もが、私の名前は今年%sの、%d個歳\ N-」、名前パラメータ文字列が続き、年齢)} //機能chineseSay、英語の自己紹介、int型と空を返し、それはenglishSay FUNC introduceFuncタイプ(名前文字列、年齢intです){Fmt.Printf(「やあみんな、私の名前は%S、D及びIよ歳%\ N- IS」、名前、年齢)} //反復学生のセット、各学生が導入、特に自己紹介情報(引数の型ごとFUNC(メートルマップ[文字列] int型に応じて)中国語や英語で=)を導入、Hメートル{IFゼロ&& LEN(M)> 0!{名、年齢:= レンジh.say mを{(名前、年齢)}}} FUNCメイン(){学生:=マップ[文字列] INT { "胡":12は、 "イ"である:33は、 "ジム"である:31れる} VARハンドラintroduceFunc = chineseSayそれぞれ(学生、ハンドラ)。 =ハンドラ関数は//それぞれ対応するタイプ(学生、chineseSay)に変換されていないため、エラーをコンパイル以下englishSayそれぞれ(学生。、ハンドラ)//}


次のように出力されます。

みなさんこんにちは、私の名前は、風下33歳
私の名前は、ジム・31歳、みなさんこんにちは
私の名前はHU、12歳、みなさんこんにちは
私の名前はHU IS、みんなこんにちは、私は12歳です
、私の名前みんなHIリーはIS、および33がある私は歳です
こんにちは皆、私の名前はジムで、31は、私は歳

 

EnglishSay、ChineseSay:あなたは例のインタフェース機能を使用しない場合、我々は2つの構造体を定義しました。その後、メソッドを定義します。たとえば、紹介するインタフェースを実装することです。使用前に構造体のインスタンスを作成します。コードは以下の通りであります:

主パッケージ

のインポート"FMT" 
//自己紹介インタフェース定義
型インタフェースintroduce2を{ 
    言う(文字列名、int型の年齢
} 
ChineseSay構造体入力{ 
 }  FUNC(ChineseSay)を言う(文字列名、int型の年齢){  fmt.Printf( "こんにちはN- \皆、私の名前は%sと、%d個歳今年" 名前、年齢型構造体の)} EngliseSay {} FUNC(EngliseSay)は、文字列名、int型の年齢(と言う私の名前は皆さんこんにちは、fmt.Printf({)" S%であり、Iは、%Dの年だ旧\ N-」引数のfunc each2の種類に応じて、名前、年齢)} //反復学生セット、導入された各学生、中国語や英語で特に自己紹介モード()(マップM [文字列] int型、H introduce2){M = nilの&& IF LEN(M)> 0!{名、年齢:=範囲m主FUNC {h.say(名前、年齢)}}}(){学生:=マップ[ストリング] INT { "HU" 12、 "風下" 33、 "ジム":31 } each2(学生、 ChineseSay {})each2(学生、EngliseSay {})}

出力:

みなさんこんにちは、私の名前は、ジム・31歳
私の名前はHU、12歳、みなさんこんにちは
みなさんこんにちは、私の名前は33歳、風下である
私の名前はHU IS、みんなこんにちは、私は12歳です
みなさんこんにちは、私の名前リーはIS、および33がある私は歳です
こんにちは皆、私の名前はジムで、31は、私は歳

おすすめ

転載: www.cnblogs.com/wanjch/p/11416587.html