Declaración de constantes
La declaración de constantes es similar a la de variables. La palabra clave var
se reemplaza con la palabra clave const
.
Nota: Las constantes deben tener un valor asignado al momento de declararse.
En Go, todas las variables deben ser utilizadas después de definirse, pero las constantes son una excepción. Incluso si no se utilizan, no habrá error.
La sintaxis para declarar una constante es la siguiente:
const name [type] = value
name
es el nombre de la constante que se está declarando. type
es el tipo de dato de la constante, pero se puede omitir porque Go puede inferirlo automáticamente. El valor al final es el valor asignado a la constante.
Tenga en cuenta que solo se pueden utilizar los siguientes tipos para declaraciones de constantes:
- Tipos enteros
- Tipos de punto flotante
- Tipos complejos
- Tipos booleanos
- Tipos de cadena
Veamos un ejemplo. Crea un nuevo archivo llamado const.go
en el directorio ~/project
:
touch ~/project/const.go
Ingresa el siguiente código en const.go
:
package main
import "fmt"
// Declare a single constant
const labex string = "LabEx" // explicitly specify the type as string
const labs = "LABS" // automatically inferred as string by the compiler
// Declare multiple constants
const (
hangzhou, chengdu = "HANGZHOU", "CHENGDU"
monday, tuesday, wednesday = "MONDAY", "TUESDAY", "WEDNESDAY"
)
func main() {
fmt.Printf("The type of labex is: %T, and its value is %s\n", labex, labex)
fmt.Printf("The type of labs is: %T, and its value is %s\n", labs, labs)
fmt.Println()
fmt.Println(hangzhou, chengdu)
fmt.Println(monday, tuesday, wednesday)
}
go run ~/project/const.go
Después de ejecutar el programa, la salida es la siguiente:
The type of labex is: string, and its value is LabEx
The type of labs is: string, and its value is LABS
HANGZHOU CHENGDU
MONDAY TUESDAY WEDNESDAY
Aquí, demostramos la declaración de constantes individuales y múltiples. Al declarar múltiples constantes, se recomienda utilizar paréntesis.
En el programa, solo demostramos la declaración de constantes de tipo cadena. Sin embargo, las constantes también pueden tener otros tipos, como enteros y booleanos.
Al declarar múltiples constantes utilizando paréntesis, si una constante no se inicializa, heredará el valor de la constante anterior.
Ingresa el siguiente código en const.go
:
package main
import "fmt"
const (
monday = "MONDAY"
tuesday = "TUESDAY"
wednesday = "WEDNESDAY"
thursday
friday
)
func main() {
fmt.Println(monday, tuesday, wednesday, thursday, friday)
}
go run ~/project/const.go
La salida es la siguiente:
MONDAY TUESDAY WEDNESDAY WEDNESDAY WEDNESDAY
Aquí, thursday
y friday
no tienen valores explícitos. De acuerdo con las reglas de Go, cuando una constante no se inicializa explícitamente, hereda el valor de la constante anterior. En este caso:
thursday
hereda el valor de wednesday
.
friday
también hereda el valor de wednesday
.
Este comportamiento permite un código conciso, pero puede llevar a resultados inesperados si no se tiene en cuenta.
Si quieres que thursday
y friday
tengan valores distintos, debes asignarlos explícitamente:
const (
monday = "MONDAY"
tuesday = "TUESDAY"
wednesday = "WEDNESDAY"
thursday = "THURSDAY"
friday = "FRIDAY"
)
Esto producirá la salida esperada:
MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY