CSDNは、コピーの練習によると、ウェブページを見つけます。
ほとんどすべての利用シナリオインチ
メインパッケージ のインポート( "FMTを" ) 人インタフェース{型 ReturnName()文字列 } {ロールインターフェースを入力 した人 ReturnRole()文字列 } 学生のstruct {入力 名文字列 } 入力教師構造体{ 名列 } )(FUNC(S学生)ReturnNameを文字列{ s.Nameを返す } ReturnNameをFUNC(T *教師)()文字列{ t.Name戻り } FUNC(S学生)ReturnRole()文字列{ 戻り"学生" } CheckPeople FUNC(テストインターフェース{}){ _場合はOK、 :=テスト(人々 );。OK { fmt.Println( "学生は人々を実装") } } FUNCメイン(){ } "これは学生です。":=学生{名:CBSを SSS:=先生{名: "これは先生です。"} CheckPeople(CBS ) VAR人 VAR bの役割 A = CBSの 名前:= a.ReturnName() fmt.Println(名) 、A =&SSS 名= a.ReturnName() fmt.Println(名) 、B = CBSの 役割:= b.ReturnRole( ) fmt.Println(役割) PARAMS:=作る([]インターフェース{}、3) PARAMS [0] = 88件 のparams [1] = "これは文字列である" paramsは[2] =生徒{名: "CBS"} インデックスの、V:=範囲PARAMS { _場合、OK:= V(INT)。OK { fmt.Printf(「PARAMS [%dは] intでタイプ\ n」は、インデックス) _、OKであればそうでない}:= V(文字列);。[OK] { fmt.Printf(」 } _もし他に、[OK]:= V(学生)。[OK] { fmt.Printf(インデックス"のparams [%dは]カスタム学生タイプ\ nのである") }他{ fmt.Printf( "リスト[%dの]不明なタイプ。\ n"は、インデックス) } } インデックスのために、V :=範囲PARAMS { スイッチ値:= V(タイプ){ ケースINT: :fmt.Printf(インデックス、値"%Dを\ n PARAMS [%dは] INT型である") 場合列: fmt.Printf(」 paramsは[%dは]文字列型である:%のSの\ n」、インデックス、値) の場合学生: fmt.Printf( "paramsは[%dは]カスタム学生のタイプである:%のSの\ n"、インデックス fmt.Printf(「リスト[% D]未知のタイプ。\ n」は、インデックス) } } }
出力:
D:/go-project/src/InterfaceGo/InterfaceGo.exe [D:/ゴー・プロジェクト/ SRC / InterfaceGo] 学生は人々を実装 。これは学生です。 これは先生です。 学生 [0] paramsがあるint型 のparams [1]は文字列型 のparams [2]でカスタム学生タイプ のparams [0] int型である:88の これは文字列です:[1]文字列型のparamsで のparams [2]はカスタムでは、学生タイプ:{CBS} 成功:进程退出代码0。