ゴー・オプションモード:使用の閉鎖モードの実装オプション

使用して、モードの実装オプションをクロージャ:

メインパッケージ

のインポート"FMTは、" 

//構造を定義
{構造体型のステュー
	名前のString 
	年齢のint 
	addrは文字列
} 

VAR(
	//属性のデフォルト値のStu設定
	DefaultStu = {&スチューに
		"誰か"、名前を
		年齢:0、
		ADDRを: "不明"、
	} 

クロージャのStu特性を備え// 
FUNC SetNameメソッド(文字列名)FUNC(*ステュ){ 
	リターンFUNC(STUステュ*){ 
		stu.Name名= 
	} 
} 

FUNC setAge(年齢INT)FUNC( STU *){ 
	戻りFUNC(STU STU *){ 
		stu.Age年齢= 
	} 
} 

FUNC SetAddr(文字列ADDR)FUNC(* STU){ 
	戻りFUNC(STU STU *){ 
		stu.Addr = ADDR 
	} 
}
 
FUNC(*ステュ)optfunc型

クロージャを返す関数として//のsetXXXパラメータは、
//例は、この例の完全な硬化特性を達成するために、パラメータとして渡さSTU 
NewStu(OPTS FUNCを.. .OptFunc)* {ステュ
	STU:= DefaultStu 
	O、_用:範囲= OPTS { 
		O(STU)
	} 
	戻りSTU 
} 

FUNCメイン(){ 
	STU:= NewStu()
	fmt.Println(STU){//&誰か0 }不明
	STU2:= NewStu(SetAddr( "湖北")、SetNameメソッド( "波"))
	fmt.Println( "STU2 ="、STU2){//波STU2 = 0&湖北} 

}

  

おすすめ

転載: www.cnblogs.com/flycc/p/12667932.html