En el lenguaje Go es definir las funciones, métodos y funciones de la recipient're sólo un argumento, y esa es la forma en func
y entre un argumento más identificadores. Definido entre el destinatario y el nombre de la función de la palabra clave func:
persona de tipo struct { nombre de cadena de edad int } func (p persona) por ejemplo () { fmt.Printf ( " Soy% s,% d años \ n " , p.name, p.age) }
El receptor tiene dos, uno es el valor del receptor un puntero a un destinatario. Como su nombre indica, el valor del destinatario, el destinatario es el tipo de un valor, es una copia del método interno no hacer cambios a su destinatario real; receptor puntero, escriba el destinatario es un puntero, una referencia al destinatario de esta modificación del efecto entre el receptor real de referencia.
Mira las dos piezas de código
Un código:
paquete principal de importación " FMT " persona de tipo struct { nombre de cadena de edad int } func (p persona) por ejemplo () { fmt.Printf ( " Soy% s,% d años \ n " , p.name, p.age ) } func (p Persona) de más edad () { p.age = p.age + 1 } func main () { var p1 persona = Persona { " zhansan " , 16 } p1.older () p1.say () // salida: soy zhangsan, de 16 años de edad var p2 * Persona Persona = & {" Lisi " , 17 } p2.older () p2.say () // salida: Soy Lisi, 17 años }
salida:
#gosetup I ' m zhansan, 16 años I ' m Lisi, de 17 años de edad
Código II:
paquete principal de importación " FMT " persona de tipo struct { nombre de cadena de edad int } func (p persona) por ejemplo () { fmt.Printf ( " Soy% s,% d años \ n " , p.name, p.age ) } func (p * Persona) de más edad () { p.age = p.age + 1 } func main () { var p1 persona = Persona { " zhansan " , 16 } p1.older () p1.say () / / salida: soy zhangsan, 17 años varp2 * Persona Persona = & { " Lisi " , 17 } p2.older () p2.say () // salida: Soy Lisi, de 18 años de edad }
salida:
#gosetup I ' m zhansan, 17 años I ' m Lisi, de 18 años de edad
Esta diferencia es de sólo dos códigos en más viejo método () que, primero valor de código es el método destinatario, el segundo segmento de código es un puntero a los métodos de receptores.