Hoje vamos dar prosseguimento a Série Go. No episódio anterior vimos uma introdução e os primeiros passos.
Nesse episódio veremos:
Em Go existem tipos de dados, mas você pode criar uma variável sem informar o tipo usando o operador :=
, exemplo criando uma variável do tipo string:
variavel := "Olá, Golang!"
package main
import "fmt"
func main (){
variavel := "Olá, Golang!"
fmt.Println(variavel)
}
Usando a palavra reservada var
package main
import "fmt"
func main (){
var variavel = "Olá, Golang!"
fmt.Println(variavel)
}
Regras para criar variáveis:
var variavel := "Olá, Golang!"
variavel = "Olá, Golang!"
variável := "Olá, Golang!"
1variavel := "Olá, Golang!"
variavel1
ou var1avel
_variavel
, variavel_
, var_iavel
, var1_avel
, _vari_1avel
…Use a palavra reservada var
ou o operador :=
para qualquer tipo de dado, exemplos:
package main
import "fmt"
func main (){
var num = 10
var ola = "Olá"
mundo := "Mundo"
var preco = 49.54
fmt.Println(num)
fmt.Print(ola)
fmt.Print(" ")
fmt.Println(mundo)
fmt.Println(preco)
}
Variáveis, lógico, podem variar o valor, mas use tanto var
quanto :=
somente quando criar pela primeira vez, exemplos:
Correto:
var nome = "Marcos Oliveira"
nome = "Terminal Root"
fmt.Println(nome)
Saída:
Terminal Root
.
Errado:
var nome = "Marcos Oliveira"
var nome = "Terminal Root"
fmt.Println(nome)
Erro ao compilar/rodar:
./arquivo.go:7:7: nome redeclared in this block
Outra observação é que se você tentar usar uma variável que você não inicializou(somente declarou, mas não atribuiu nenhum valor inicial) usando a palavra reservada var
, haverá erro na execução/compilação do programa, exemplo:
package main
import "fmt"
func main(){
var nome; // ERROR
nome = "Marcos";
fmt.Println(nome)
}
Note também que o
;
é opcional em Go.
VARIÁVEIS CRIADAS E NÃO UTILIZADAS, GERAM ERRO NA COMPILAÇÃO!
O operador para concatenar em Go é o +
(mais), no entanto, isso só funciona(lógico) para strings. Exemplo de uso:
package main
import "fmt"
func main (){
var ola = "Olá"
mundo := "Mundo"
fmt.Print(ola + ", " + mundo + "!\n")
}
Note que também podemos usar caracteres com escape para pular linha:
\n
em
Para criar constantes usa-se a palavra reservada const
.
Diferentemente das variáveis, em nenhuma circunstância, o valor poderá ser alterado:
package main
import "fmt"
func main(){
const pi = 3.14
fmt.Println(pi)
}
Se você tentar redefinir a constante de nome pi
haverá erro:
package main
import "fmt"
func main(){
const pi = 3.14
pi = 6.18
fmt.Println(pi)
}
/hello.go:7:6: cannot assign to pi (declared const)
Quando usamos tanto var
quanto :=
o tipo de dado é usado dinamicamente(é atribuído o tamanho padrão do tipo) e isso pode influenciar no desempenho dependendo do tipo de aplicação/programa que você estiver criando.
Então, para cada conteúdo é usado um tipo, por exemplo, para uma variável possuir o conteúdo "Olá, Golang!"
o Go cria dinamicamente o tipo string
, para um número sem pontuações usa int
, com pontuações é float
, e entre outros, veja os tipos básicos na tabela abaixo:
Para entender algumas informações da tabela precisa ter conhecimentos intermediários de Matemática
TIPO | DESCRIÇÃO | EXEMPLO |
---|---|---|
byte |
para um único caractere | a |
string |
para conjunto de caracteres | "Olá, Golang!" |
int |
para números positivos e negativos | 10 ou -10 |
float |
para números irracionais | 9.36 |
complexN |
para números complexos, onde o N deve ser o tamanho | 6i |
rune |
para símbolos unicode(emoji, por exemplo) | U+0030 |
bool |
para valores de acordo com a matemática booleana | true ou false |
Alguns dos tipos básicos citados acima possuem sub categorias que pode variar o tamanho da variável, exemplos:
int
possui: int8
, int16
, int32
e int64
o número representa a quantidade de bits, por exemplo, int64
pode armazenar até 64 bits ou 8 bytes( 64 / 8) e assim por diante, o padrão dependerá do sistema operacional que está rodando o código Go .float
se subdivide em: float32
e float64
, o padrão é 64 .complexN
tem de ser: complex64
ou complex128
.
Os outros tipos não possuem sub divisões, mas para o tipo
bool
o padrão éfalse
.
Criando um código definindo o tipo:
Somente funciona unindo com a palavra reservada
var
package main
import "fmt"
func main(){
var olamundo string = "Olá, Golang"
fmt.Println(olamundo)
}
Se você está acostumado com outras linguagens de programação perceba que o tipo é declarado após o nome.
Outros exemplos:
package main
import "fmt"
func main(){
// String
var olamundo string = "Olá, Golang"
olamundo = "Olá, Go!"
fmt.Println(olamundo) // Olá, Go!
// int
var num int = 42
fmt.Println(num)
// float32
var x float32 = 54.892
fmt.Println(x)
// complexN → complex64
var yx complex64 = 2 + 5i
fmt.Println(yx)
// byte
var letra byte = 'a'
fmt.Println(letra) // 97 de acordo com a tabela ASCII
// rune
fmt.Printf("%U\n", []rune("☎")) // veremos mais detalhes à frente
// bool
var p bool; // ou var p bool = true
fmt.Println(p) // false
}
As prováveis saídas do código acima:
Olá, Go!
42
54.892
(2+5i)
97
[U+260E]
false
Por esse episódio é só, até o próximo!