Las variables y las constantes son conceptos fundamentales en la mayoría de los lenguajes de programación. Son los bloques de construcción para almacenar y gestionar datos.
En este artículo, veremos cómo funcionan las variables y las constantes en Go.
Tabla de contenidos:
¿Qué son las Variables?
Una variable es un lugar de almacenamiento identificado por un nombre (o identificador) que contiene un valor. Este valor puede cambiar (o variar) durante la ejecución de un programa. Por eso se llama variable.
Por ejemplo:
myName := “temitope”
fmt.Println(myName)
myName:= ”oyedele”
fmt.Println(myName)
Creamos una variable con un identificador de miNombre
que contiene un valor de cadena.
Si te has fijado, hemos cambiado el valor a otra cadena, y podemos hacerlo varias veces porque las variables pueden hacerlo.
Las variables permiten almacenar datos, que pueden ser de diferentes tipos, como enteros, números de coma flotante, cadenas u objetos.
Cómo crear una variable en Go
Existen dos formas principales de crear una variable en Go, la declaración explícita y la declaración abreviada.
Declaración explícita
Esta es la forma tradicional de crear una variable en Go. Funciona utilizando la palabra clave var
y declarando el tipo de la variable, lo que hace que tu código sea más legible y claro.
package main
import "fmt"
func main() {
var age int = 25
var name string = "Temitope"
var height float64 = 5.7
fmt.Println(age, name, height)
}
Puedes ver que, para cada variable, declaramos su tipo de dato antes de asignarle un valor.
output:
25 Temitope 5.7
La palabra clave var
y el tipo de dato también se pueden utilizar sin tener un valor inicial:
package main
import "fmt"
func main() {
var age int
var name string
var height float64
age = 25
name = "Temitope"
height = 5.7
fmt.Println(age, name, height)
}
De esta forma, las variables se declaran primero sin un valor inicial. Luego se les asignan valores más adelante en el código. Seguirá teniendo la misma salida que la primera.
Declaración abreviada de variables
La sintaxis de declaración de variables abreviada (:=
) es una manera más concisa de declarar variables. Este método permite declarar y inicializar una variable en una sola línea sin expresar explícitamente su tipo, ya que el tipo se infiere de la valor asignado.
package main
import "fmt"
func main() {
age := 25
name := "Temitope"
height := 5.7
fmt.Println(age, name, height)
}
Aquí, cada variable fue declarada junto con su valor, con Go infiriendo el tipo de datos. Por ejemplo, age
fue declarada e inicializada con un valor de 25, y Go infirió su tipo como int
. name
fue declarada con el valor “Temitope”, y Go infirió su tipo como string
. Finalmente, height
fue declarada con 5.7, y Go infirió su tipo como float64
.
output:
25 Temitope 5.7
Uno de los inconvenientes de la declaración abreviada de variables es que solo se puede usar dentro de una función.
Declaraciones de Variables Múltiples
Puedes declarar y inicializar varias variables en la misma línea separándolas con comas. Esta aproximación es simple y directa. Es comúnmente usada cuando las variables están relacionadas o cuando quieres inicializarlas juntas. Por ejemplo:
package main
import "fmt"
func main() {
var age, height int = 25, 180
var name, city string = "Temitope", "New York"
fmt.Println(age, height)
fmt.Println(name, city)
}
Aquí, la variable age
y height
ambas declaradas como enteros e inicializadas con los valores 25 y 180, respectivamente. La variable name
y city
también ambas declaradas como cadenas y inicializadas con “Temitope” y “New York”:
Output:
25 180
Temitope New York
También puedes declarar varias variables en un bloque como sigue:
package main
import "fmt"
func main() {
var (
age int = 25
name string = "Temitope"
height int = 180
city string = "New York"
)
fmt.Println(age, name, height, city)
}
Aquí, las variables age
, name
, height
, y city
son declaradas dentro de un solo bloque var, con cada variable en su propia línea.
Output:
25 Temitope 180 New York
Valores cero
Cuando se declaran variables sin inicializar, por defecto se les asigna un valor cero. Estos valores pueden diferir según el tipo de variable. A continuación se muestra un ejemplo de cómo se pueden declarar valores por defecto:
package main
import "fmt"
func main() {
var intValue int
var floatValue float64
var boolValue bool
var stringValue string
var ptrValue *int
var sliceValue []int
var mapValue map[string]int
fmt.Println("Zero values:")
fmt.Println("int:", intValue)
fmt.Println("float64:", floatValue)
fmt.Println("bool:", boolValue)
fmt.Println("string:", stringValue)
fmt.Println("pointer:", ptrValue)
fmt.Println("slice:", sliceValue)
fmt.Println("map:", mapValue)
}
En el código anterior, esto es lo que va a ocurrir:
-
La variable entera
intValue
tendrá el valor cero 0. -
El número flotante
floatValue
tendrá el valor cero 0. -
La variable booleana
boolValue
tendrá el valor cerofalse
. -
La cadena de texto
stringValue
tendrá el valor cero “” (cadena vacía). -
El puntero
ptrValue
, el slicesliceValue
y el mapamapValue
tendrán todos el valor ceronil
.
Salida:
Output:
Zero values:
int: 0
float64: 0
bool: false
string:
pointer: <nil>
slice: []
map: map[]
¿Qué es el Alcance de unaVariable?
Las variables pueden declararse globalmente o localmente. El alcance de una variable determine dónde pueden accederse y modificarse dentro de tu código.
Variables globales se declaran fuera de cualquier función, típicamente en la parte superior de un archivo, y pueden ser accedidas por cualquier función dentro del mismo paquete. Aquí tienes un ejemplo:
package main
import "fmt"
var globalCounter int = 0
func incrementCounter() {
globalCounter++
}
func main() {
fmt.Println("Initial Counter:", globalCounter)
incrementCounter()
fmt.Println("After Increment:", globalCounter)
}
En el ejemplo anterior, globalCounter
es la variable global, y es accesible tanto por la función incrementCounter
como por la función main
.
Además, el valor de globalCounter
persiste a través de las llamadas a la función. Esto significa que cualquier cambio realizado en ella en una función afecta su valor en otras partes del programa.
Por otro lado, las variables locales se declaran dentro de una función o un bloque y solo son accesibles dentro de esa función o bloque específico. Se crean cuando se ejecuta la función o el bloque y se destruyen una vez que se completa. Por ejemplo:
package main
import "fmt"
func incrementCounter() {
localCounter := 0
localCounter++
fmt.Println("Local Counter:", localCounter)
}
func main() {
incrementCounter()
incrementCounter()
}
En el código anterior, tenemos la localCounter
como variable local dentro de la función incrementCounter
. Cada vez que se llama a incrementCounter
, se crea una nueva localCounter
, se inicializa en 0 y se incrementa.
El valor de localCounter
no persiste entre las llamadas a la función, por lo que no puede afectar a ninguna parte de un programa cuando se realiza un cambio en la función.
Convenciones de Nomenclatura en Go
La nomenclatura correcta de variables es crucial para escribir código limpio, legible y mantenible. Go tiene algunas convenciones y reglas específicas para nombrar variables. A continuación, algunas de ellas:
- Utilice nombres descriptivos: Utilice nombres que claramente describan el propósito o contenido de la variable. En lugar de usar nombres vagos como x o y, use nombres como
edad
,precioTotal
onombreUsuario
que claramente transmitan lo que representa la variable. -
Utilice CamelCase para nombres de varias palabras: En Go, es una práctica común utilizar CamelCase para los nombres de variables que constan de varias palabras. La primera palabra está en minúscula y la primera letra de cada palabra posterior está en mayúscula.
-
Evite usar guiones bajos: A diferencia de otros lenguajes, Go prefiere CamelCase sobre el uso de guiones bajos para separar palabras en los nombres de variables. Manténgase al estilo idiomático de Go utilizando CamelCase.
-
Usar Nombres Cortos para Variables de Vida Corta: Para variables de vida corta, como contadores o índices de bucle, es aceptable usar nombres cortos como i, j o k.
¿Qué son las Constantes en Go?
Las constantes son valores inmutables definidos en tiempo de compilación que no se pueden modificar a lo largo de la ejecución del programa. Son útiles para definir valores que se conocen con anticipación y que permanecerán iguales.
Imagina que estás construyendo una tienda online donde el costo estándar de envío es siempre de $10. Puedes declararlo como una constante, de modo que puedas usarlo en todo tu programa cada vez que se necesiten aplicar cargos de envío. Si cambian las tasas de envío, solo necesitas actualizar el valor en un solo lugar.
Cómo Declarar Constantes en Go
Puedes declarar constantes usando la palabra clave const
, seguida del nombre, el tipo (opcional si el valor implica el tipo) y el valor de la constante. Aquí tienes cómo hacerlo:
package main
import "fmt"
func main() {
const pi float64 = 3.14159
const greeting string = "Hello, World!"
fmt.Println("Pi:", pi)
fmt.Println("Greeting:", greeting)
}
Si intentas cambiar una constante después de su declaración, obtendrás un error de compilación.
Tipos de Constantes en Go
Las constantes se pueden categorizar como tipadas o no tipadas. Ambos tipos de constantes sirven el mismo propósito. Proporcionan valores fijos e inmutables a través del programa. Sin embargo, difieren en cómo Go maneja sus tipos y qué tan flexibles son cuando se utilizan.
Las constantes sin tipo no se asignan un tipo a menos que se utilicen en un contexto que requiera un tipo. Cuando declaras una constante sin tipo, Go infiere el tipo en el punto en el que se utiliza la constante. Esto hace que las constantes sin tipo sean más flexibles porque pueden usarse en varios ajustes sin necesidad de conversión de tipo.
package main
import "fmt"
const gravity = 9.81
func main() {
var height int = 10
var acceleration float64 = gravity * float64(height)
fmt.Println("Acceleration:", acceleration)
}
Aquí, gravity
es la constante sin tipo. Esto significa que Go puede inferir su tipo basándose en cómo se utiliza. Cuando gravity
se utiliza en una calculadora con un float64
, Go automáticamente la tratará como un float64
.
A diferencia de las constantes sin tipo, las constantes con tipo tienen un tipo declarado explícitamente. Esto significa que solo se pueden usar en contextos que se ajusten a ese tipo o se puedan convertir a un tipo compatible. Las constantes con tipo son más estrictas, garantizando que el valor siempre se trate como el tipo específico declarado.
package main
import "fmt"
const speedOfLight int = 299792458
func main() {
var distance int = speedOfLight * 2
fmt.Println("Distance:", distance)
}
Aquí, speedOfLight
es la constante con tipo del tipo int
.
Solo se puede utilizar en operaciones con otros valores de int
o convertirse explícitamente a un tipo diferente.
Eso es todo
En este artículo, revisamos qué son las variables y las constantes y cómo declararlas en Go.
Las variables y las constantes son herramientas críticas en la programación. Permiten a los desarrolladores administrar y manipular los datos de manera eficiente. Cuando entiendes cómo utilizarlas, puedes mejorar la calidad de tu código.
Por favor, comparte si encontraste esto útil.
Source:
https://www.freecodecamp.org/news/variables-and-constants-in-go/