Saltar al contenido

¿Cómo eliminar el objeto de estructura en Go?

Solución:

Go es un lenguaje de recolección de basura. Se supone que no debe hacerlo y no puede eliminar objetos de la memoria. Es del recolector de basura deber y responsabilidad para hacerlo, y hace esto automáticamente. El recolector de basura eliminará correctamente los objetos de la memoria cuando se vuelvan inaccesibles.

Puede asignar nil a mapas y sectores porque nil es un valor válido (el valor cero) para esos tipos. El valor cero para struct tipos no es nil pero un struct valor donde todos sus campos tienen sus valores cero.

Si desea borrar o sobrescribir el valor de la estructura, simplemente puede asignarle otro valor de estructura, preferiblemente el valor cero (una estructura vacía):

person1 := Person{name: "Name", age: 69}
// work with person1

// Clear person1:
person1 = Person{}

Pero sepa que esto no liberará la memoria asignada por person1; como se escribió anteriormente, el GC lo liberará automáticamente cuando se vuelva inalcanzable.

nil también es un valor válido (el valor cero) para los tipos de puntero, por lo que si person1 sería un puntero a Person (es decir, *Person), también puede asignar nil a eso, por ejemplo:

person1 := &Person{name: "Name", age: 69}
// work with person1

// Clear person1:
person1 = nil

Al borrar un puntero configurándolo en nil, el objeto puntiagudo, de nuevo, será atendido por el GC.

Para obtener más detalles sobre cómo funciona el recolector de basura, consulte No se puede liberar memoria una vez ocupada por bytes.

Si desea establecer nil, use un puntero en lugar de un valor.

person1 := &Person{name: "Name", age: 69}
// Then you can set
person1 = nil
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *