Go é fortemente tipada, isso significa que os tipos das variáveis são bem definidos e não podem mudar durante o programa.
Tipos de variáveis em Go:
bool
string
Varias formas de inteiro:
int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr
byte na verdade é um alias para uint8
rune é um alias int32 e é usada para armazenar Unicode
float32 float64
complex64 complex128
package main
import (
"fmt"
)
var ( // Declarando multiplas variáveis
nome = "Cesar"
idade = 42
url, path, query, page = "example.org", "/search", "&q=golang", 1
)
const pi = 3.141592
func main() {
// Declarando multiplas variáveis na mesma linha e atribuindo valor
var x, y int = 1, 2
// Declarando sem atribuir valor (Go sempre assume um valor automaticamente)
var a string
var s string
/*
A variavel "a" vai rceber um valor mas vamos deixar
a variavel "s" sem valor propositalmente, no fim do programa
vamos ver que uma string vazia foi atribuída a "s" automaticamente.
*/
a = "texto 1"
//Criação de variável utilizando : que substitui a palavra chave var quando se cria
//uma variável atribuindo um valor a ela na mesma instrução
b := "texto 2"
ola := func() {
fmt.Printf("Olá da função anônima!\r\n")
}
fmt.Printf("a tipo: %T\r\n", a)
fmt.Printf("b tipo: %T\r\n", b)
fmt.Printf("π tipo: %T\r\n", pi)
fmt.Printf("ola tipo: %T\r\n", ola)
fmt.Printf("valor de a = %v\r\n", a)
fmt.Printf("valor de b = %v\r\n", b)
fmt.Printf("valor de π = %v\r\n", pi)
fmt.Printf("valor de x = %v\r\n", x)
fmt.Printf("valor de y = %v\r\n", y)
fmt.Printf("valor de s = %q\r\n", s)
ola()
}