Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/config.php on line 61

Deprecated: substr(): Passing null to parameter #1 ($string) of type string is deprecated in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/config.php on line 61
Visibilidad de variables en paquetes
Source Code

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/main/articles.php on line 18

Visibilidad de variables en paquetes


Tiempo de lectura: 1 minutos

Utilizar las mayúsculas de forma apropiada puede evitar dolores de cabeza



El problema

Después de montar el código para acceder a la API, tenemos un error en el preprocesador que impide la compilación del código. Parece que no puede ver las variables del paquete de configuración.

Estructura del código

En este ejemplo, de llamada una API en la que necesitamos la API KEY, montamos el paquete config para mantener privado nuestro acceso:

package config

// -----------------------------------------------
// FS API key
// -----------------------------------------------
const (
	apikey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
	secret = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
)

var fsApiKey = map[string]string{
	"apikey": apikey,
	"secret": secret,
}

En el programa principal referenciamos a internal para importar el paquete config

import (
	"encoding/xml"
	"fmt"
	"io"
	"log"
	"net/http"
	"strings"

	// local
	"webServices/internal/config"
	"webServices/pkg/fatsecret"
)

Y, en el código, pasamos el mapa con la API KEY:

		getUserDataAPI_2()
		if food != "" {

			callFatsecret(config.fsApiKey)
		}

Pero esto da error en el compilador, el mensaje es que no se ha definido config.fsApiKey y el formateador acaba eliminado la referencia de la sección import. ¿Qué es lo que está pasando?

Solución

El problema reside en que el paquete config declara la variable fsApiKey y esta variable es local, no tiene visibilidad desde el paquete principal. Lo que hemos de hacer es «declararla» pública para no sea local, por lo que escribimos FsApiKey. Esa primera mayúscula es la que determina que sea pública.

Y la declaración queda así:

var FsApiKey = map[string]string{
	"apikey": apikey,
	"secret": secret,
}

Y la llamada:

		getUserDataAPI_2()
		if food != "" {

			callFatsecret(config.FsApiKey)
		}

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/navigation.inc.php on line 10

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/navigation.inc.php on line 21
Más artículos




Xavier es un desarrollador senior full stack y opera desde la ciudad mediterránea de Barcelona. Le encantan las tecnologías de software y está convencido que el desarrollo de software es un proceso colaborativo y abierto.
Y es un apasionado de la astronomía y de la fotografía. Lo puedes encontrar en:
Comparte este post


Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/footer.inc.php on line 24