una que programacion poo objetos modificadores metodos ejemplos clases clase acceso go

go - que - Campos y métodos privados para una estructura.



que es public en programacion (3)

En Go, un identificador que comienza con una letra mayúscula se exporta desde el paquete, y cualquier persona ajena al paquete que lo declara puede acceder a él.

Si un identificador comienza con una letra minúscula, solo se puede acceder desde el paquete.

Si necesita miembros de un tipo para que solo puedan acceder los miembros de ese tipo, debe colocar ese tipo y sus funciones miembro en un paquete separado, como el único tipo en ese paquete.

En el siguiente código de prueba, me gustaría que mytype y el método doPrivate privados, de modo que solo los miembros de mytype puedan acceder a él, pero no otros tipos / funciones en el alcance del paquete mypackage .

¿Puedo hacer esto en Golang?

package mypackage type mytype struct { size string hash uint32 } func (r *mytype) doPrivate() string { return r.size } func (r *mytype) Do() string { return doPrivate("dsdsd") }

El size campos y el hash , así como el método doPrivate deben encapsularse y ningún otro tipo debe tener acceso a ellos.


No es así como funciona la "privacidad" en Go: la granularidad de la privacidad es el paquete.

Si realmente desea que solo los miembros de mytype accedan a algunos campos, debe aislar la estructura y las funciones en su propio paquete.

Pero esa no es la práctica habitual. Si Go es OOP o no es discutible, pero está claro que la práctica no es encapsular el código mediante una estructura como la que parece querer hacer. Por lo general, un paquete es lo suficientemente pequeño para ser coherente: si no desea acceder a los campos desde dentro del paquete, no acceda a ellos.


No puedes hacer esto en Go. La visibilidad está en un nivel por paquete solamente. Pero puedes dividir tu paquete en dos.