Go - métodos, en campos anónimos

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido 1 puesto en Go (en relación al último mes)
Gráfica de Go

métodos, en campos anónimos

Publicado por Ruben (1 intervención) el 07/09/2020 10:56:13
Hola, soy nuevo en Go, podrían explicarme, por que pasa esto?
La cuestión es que he llamado a una estructura desde otra, es decir,
un campo anónimo. De la estructura “yo” a “robot”, Y luego he creado un
método “cargar” para la estructura “robot”
código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package main
import(
  "fmt"
  "time"
)
type robot struct{
  almacenamiento int
  parametros int
  bateria int
}
type yo struct{
  robot
}
func (this robot) cargar(){
  var bateria int
  for bateria < 100{
  bateria++;
  fmt.Print("cargando: ")
  fmt.Println(bateria)
  time.Sleep(1000000000);
}
 this.bateria = 100
}
func main(){
  var Ruben yo
  Ruben.cargar()
  fmt.Println(Ruben.bateria)
}
La cuestión es la siguiente, si la función cargar modifica el parámetro batería de robot,
Por que no modifica el parámetro batería de Ruben si prodece de la estructura yo,
Que tiene los parámetros de robot?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 19
Ha mantenido su posición en Go (en relación al último mes)
Gráfica de Go

métodos, en campos anónimos

Publicado por kip (4 intervenciones) el 26/09/2020 19:38:47
Hola, el comportamiento de tu código esta correcto porque has omitido un detalle importante para poder mutar las propiedades de tu struct en sus métodos, prueba con esto:

1
func (this *robot) cargar(){

Aqui transformo la signature del método a un pointer receiver y con ello puedo alterar los attrs de la struct, puedes leer mas a detalle aqui https://golangbyexample.com/pointer-receiver-method-golang/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar