Ir modo de opciones: opciones de implementación del modo de uso de los cierres

Uso cierres modo de opciones de implementación:

principal paquete 

de importación "FMT" 

// definir una estructura de 
{tipo struct Stu 
	la cadena de nombre 
	int edad 
	Dir Cadena 
} 

var ( 
	// establecer el valor por defecto del atributo Stu 
	DefaultStu = {& Stu 
		el nombre: "alguien", 
		Edad: 0, 
		Dir: "Desconocido", 
	} 
) 

// provista con cierres Stu propiedades 
FUNC SetName (String name) FUNC (* Stu) { 
	FUNC retorno (STU Stu *) { 
		nombre stu.Name = 
	} 
} 

FUNC setAge (Edad int) FUNC ( Stu *) { 
	volver FUNC (STU Stu *) { 
		stu.Age Edad = 
	} 
} 

FUNC SetAddr (String addr) FUNC (* Stu) { 
	FUNC retorno (STU Stu *) { 
		stu.Addr = addr  
	}
}
 
Tipo optfunc FUNC (* Stu) 

// setXXX parámetros, como una función para devolver el cierre, 
// Ejemplos Stu luego pasa como un parámetro, para conseguir las propiedades escenario perfecto de este ejemplo 
func NewStu (opta .. .OptFunc) * {Stu 
	STU: = DefaultStu 
	para _, O: Rango = los TPO { 
		O (STU) 
	} 
	STU retorno 
} 

FUNC main () { 
	STU: = NewStu () 
	fmt.Println (STU) {// 0 y alguien } Desconocido 
	STU2: = NewStu (SetAddr ( "Hubei"), SetName ( "ola")) 
	fmt.Println ( "STU2 =", STU2) {// onda STU2 = 0 & Hubei} 

}

  

Supongo que te gusta

Origin www.cnblogs.com/flycc/p/12667932.html
Recomendado
Clasificación