golangインタフェース

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。

  

おすすめ

転載: www.cnblogs.com/aguncn/p/11713897.html