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} }