Ayuda con el uso de las variables globales

44 views
Skip to first unread message

Carlos E. Muñoz

unread,
Apr 20, 2016, 1:40:59 PM4/20/16
to golang-spanish
Que tal espero puedan ayudarme con este pequeño problema que tengo.

La situacion es la siguiente, tengo una variable global en mi paquete principal que necesito modificar por medio de otro paquete.

Este es un pequeño borrador que puede darles una mejor idea.

-------------------------------------
package main

import "Control"

var JumpFirst bool = false

func main{
         //Proceso con JumpFirst
}

-------------------------------------

package Control

func ChangeFlag (){
        JumpFirst = true
}

Carlos E. Muñoz

unread,
Apr 20, 2016, 2:31:40 PM4/20/16
to golang-spanish
Se me olvido mencionar que sin transferir la direccion de memoria por medio de punteros.

Otra forma alternativa a esto:
-------------------------------------
package main

import "Control"

var JumpFirst bool = false

func main{
         //Proceso con JumpFirst
        Control.ChangeFlag(&JumpFirst)
}

-------------------------------------

package Control

func ChangeFlag (pnt *bool){
        pnt = true
}

Christian Espinoza L.

unread,
Apr 21, 2016, 12:19:50 AM4/21/16
to golang-spanish
Hola,

"tengo una variable global en mi paquete principal que necesito modificar por medio de otro paquete."

Quieres modificar una variable global por medio de una función definida en un paquete.
 
Según pienso debes cambiar el enfoque, tu código no dice mucho acerca de la necesidad de hacer algo como eso,
tal vez está mal planteada la solución, independiente del contexto y sobre todo cuando hay concurrencia, siempre 
se debe evitar la mutabilidad en variables globales.

Ahora si la lógica del programa es sincrona y es realmente necesario usar un flag para manejar y hacer el seguimiento de ciertos estados, 
lo que realmente debes hacer es modificar la variable por valor, es decir:

package main

import "Control"

var JumpFirst bool = false


func main
() {
   
JumpFirst = Control.Done() //devuelve true/false dependiendo de alguna tarea que realiza el paquete
}


Supongo que la funcion ChangeFlag() realiza cierta tarea y devuelve un estado true/false a la variable global, de otro modo no veo la necesidad de
cambiar el estado de una variable global solo por el gusto de hacerlo. El paquete tiene que hacer algo, ejecutar alguna tarea, controlar algo...
o estas solo experimentando?


Saludos.
Christian

Carlos E. Muñoz

unread,
Apr 21, 2016, 10:53:23 AM4/21/16
to golang-spanish
Hola Cristian,

Gracias por tomarte la molestia de contestar,

Tienes razon creo que esta mal estructurado el codigo voy a intentar reacomodandolo.

Muchas gracias ;)
Reply all
Reply to author
Forward
0 new messages