Variáveis e constantes são conceitos fundamentais em linguagens de programação. Elas são as peas de construção para armazenar e gerenciar dados.
Neste artigo, vamos ver como as variáveis e constantes funcionam em Go.
Tabela de conteúdos:
O que são Variáveis?
Uma variável é um local de armazenamento identificado por um nome (ou identificador) que mantém um valor. Este valor pode mudar (ou variar) durante a execução de um programa. É por isso que chamamos de variável.
Por exemplo:
myName := “temitope”
fmt.Println(myName)
myName:= ”oyedele”
fmt.Println(myName)
Criamos uma variável com um identificador de myName
que mantém um valor de string.
Se você notou, mudamos o valor para outra string, e podemos fazer isso várias vezes porque as variáveis permitem que isso seja feito.
Variáveis permitem que você armazene dados, que podem ser de diferentes tipos, como inteiros, números de ponto flutuante, strings ou objetos.
Como Criar Uma Variável em Go
Há duas maneiras primárias de criar uma variável em Go, declaração explícita e declaração abreviada.
Declaração Explícita
Esta é a maneira tradicional de criar uma variável em Go. Ela funciona usando a palavra-chave var
e declarando o tipo da variável, fazendo com que seu código seja mais legível e 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)
}
Você pode ver que, para cada variável, declaramos seu tipo de dado antes de atribuir um valor a ela.
output:
25 Temitope 5.7
A palavra-chave var
e o tipo de dado também podem ser usados sem um 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)
}
Desta forma, as variáveis são declaradas primeiro sem um valor inicial. Eles são então atribuídos valores mais tarde no código. Você ainda terá o mesmo resultado que no primeiro exemplo.
Declaração Abreviada de Variável
A sintaxe de declaração de variável abreviada (:=
) é uma maneira mais concisa de declarar variáveis. Este método permite que você declare e inicialize uma variável em uma única linha sem explicitamente declarar seu tipo, pois o tipo é inferido a partir do valor atribuído.
package main
import "fmt"
func main() {
age := 25
name := "Temitope"
height := 5.7
fmt.Println(age, name, height)
}
Aqui, cada variável foi declarada juntamente com seu valor, com o Go inferindo o tipo de dado. Por exemplo, age
foi declarado e inicializado com o valor de 25, e o Go inferiu seu tipo como int
. name
foi declarado com o valor “Temitope”, e o Go inferiu seu tipo como string
. Por fim, height
foi declarado com 5.7, e o Go inferiu seu tipo como float64
.
output:
25 Temitope 5.7
Um dos desvantagens da declaração de variável abreviada é que você só pode usá-la dentro de uma função.
Declarações de Variáveis Múltiplas
Você pode declarar e inicializar várias variáveis na mesma linha, separando cada variável por vírgula. Esta abordagem é simples e direta. Ela é comumente usada quando as variáveis estão relacionadas ou quando você quer inicializá-las juntas. Por exemplo:
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)
}
Aqui, as variáveis age
e height
são declaradas ambas como inteiros e inicializadas com os valores 25 e 180, respectivamente. As variáveis name
e city
também são declaradas ambas como strings e inicializadas com “Temitope” e “New York”:
Output:
25 180
Temitope New York
Você pode também declarar várias variáveis em um bloco deste modo:
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)
}
Aqui, as variáveis age
, name
, height
e city
são declaradas dentro de um único bloco var, com cada variável em sua própria linha.
Output:
25 Temitope 180 New York
Zero Values
Quando variáveis são declaradas sem serem inicializadas, elas recebem valores zero por padrão. Esses valores diferem dependendo do tipo de variável. Abaixo está um exemplo de como você pode declarar valores padrão:
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)
}
No código acima, aqui está o que vai acontecer:
-
O inteiro
intValue
receberá o valor zero 0. -
O número de ponto flutuante
floatValue
receberá o valor zero 0. -
O Booleano
boolValue
receberá o valor zerofalse
. -
A string
stringValue
receberá o valor zero “” (string vazia). -
O ponteiro
ptrValue
, slicesliceValue
e mapmapValue
receberão todos o valor zeronil
.
Saída:
Output:
Zero values:
int: 0
float64: 0
bool: false
string:
pointer: <nil>
slice: []
map: map[]
O que é um Escopo de Variável?
Variáveis podem ser declaradas globalmente ou localmente. O escopo de uma variável determina onde ela pode ser acessada e modificada dentro do seu código.
Variáveis globais são declaradas fora de qualquer função, normalmente no topo de um arquivo, e elas podem ser acessadas por qualquer função dentro do mesmo pacote. Aqui está um exemplo:
package main
import "fmt"
var globalCounter int = 0
func incrementCounter() {
globalCounter++
}
func main() {
fmt.Println("Initial Counter:", globalCounter)
incrementCounter()
fmt.Println("After Increment:", globalCounter)
}
No exemplo acima, globalCounter
é a variável global e ela é acessível tanto pela função incrementCounter
quanto pela função main
.
Além disso, o valor de globalCounter
persiste entre chamadas de função. Isso significa que qualquer mudança feita nele em uma função afeta seu valor em outras partes do programa.
Variáveis locais, por outro lado, são declaradas dentro de uma função ou bloco e são acessíveis apenas dentro desse função ou bloco específico. Elas são criadas quando a função ou bloco é executado e destruído assim que ele é concluído. Por exemplo:
package main
import "fmt"
func incrementCounter() {
localCounter := 0
localCounter++
fmt.Println("Local Counter:", localCounter)
}
func main() {
incrementCounter()
incrementCounter()
}
No código acima, temos o localCounter
como variável local dentro da função incrementCounter
. Cada vez que incrementCounter
é chamado, uma nova localCounter
é criada, inicializada em 0, e incrementada.
O valor de localCounter
não persiste entre chamadas de função, portanto, não pode afetar nenhuma parte do programa quando uma mudança é feita na função.
Convenções de Nomenclatura em Go
A nomeação correta de variáveis é crucial para a escrita de código limpo, legível e mantível. O Go tem algumas convenções e regras específicas para a nomeação de variáveis. Abaixo estão algumas delas:
-
Use nomes descritivos:
Use nomes que claramente descrevem o propósito ou conteúdo da variável. Por exemplo, ao invés de usar nomes vagos como x ou y, use nomes como
idade
,precoTotal
, ounomeUsuario
que transmitam claramente o que a variável representa. - Use CamelCase para nomes de variáveis compostos: No Go, é prática comum usar CamelCase para nomes de variáveis compostos. A primeira palavra está em minúsculas, e a primeira letra de cada palavra subsequente está em maiúsculas.
- Evite usar underlines: Ao contrário de outras linguagens, o Go prefere CamelCase antes de usar underlines para separar palavras em nomes de variáveis. Adhera a CamelCase para manter o estilo idiomático do Go.
-
Use names curtos para variáveis de curta duração: Para variáveis de curta duração, como contadores ou índices de loop, é aceitável usar nomes curtos como i, j ou k.
O que são Constantes em Go?
Constantes são valores imutáveis definidos na fase de compilação que não podem ser modificados durante a execução do programa. Eles são úteis para definir valores que são conhecidos à frente do tempo e que permanecerão os mesmos.
Imagine que você está construindo um site de loja online onde a taxa de frete padrão é sempre de $10. Você pode declará-la como uma constante, para que possa usá-la em todo o seu programa sempre que forem necessárias as taxas de frete. Se as taxas de frete mudarem, você precisará atualizar o valor em apenas um local.
Como declarar Constantes em Go
Você pode declarar constantes usando a palavra-chave const
, seguida do nome, do tipo (opcional se o valor implica o tipo) e do valor da constante. Aqui está como:
package main
import "fmt"
func main() {
const pi float64 = 3.14159
const greeting string = "Hello, World!"
fmt.Println("Pi:", pi)
fmt.Println("Greeting:", greeting)
}
Se você tentar mudar uma constante depois de declarada, então você receberá um erro de compilação.
Tipos de Constantes em Go
Constantes podem ser categorizadas como classificadas ou não classificadas. Ambos os tipos de constantes servem o mesmo propósito. Eles fornecem valores fixos, imutáveis ao longo do programa. No entanto, eles diferem em como o Go trata seus tipos e quão flexíveis eles são quando usados.
Valores constantes não-tipados não são atribuídos um tipo a menos que sejam usados em um contexto que exija um tipo. Quando você declara uma constante não-tipada, o Go inferirá o tipo no ponto em que a constante é usada. Isso torna as constantes não-tipadas mais flexíveis, pois elas podem ser usadas em vários cenários sem exigir conversão 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)
}
Aqui, gravity
é a constante não-tipada. Isso significa que o Go pode inferir seu tipo com base em como ela é usada. Quando gravity
é usada em uma calculação com um float64
, o Go automaticamente a trata como um float64
.
Diferentemente das constantes não-tipadas, as constantes tipadas têm um tipo declarado explicitamente. Isso significa que elas só podem ser usadas em contextos que correspondam a esse tipo ou sejam convertidos para um tipo compátível. Constantes tipadas são mais estritas, garantindo que o valor sempre seja tratado como o tipo específico declarado.
package main
import "fmt"
const speedOfLight int = 299792458
func main() {
var distance int = speedOfLight * 2
fmt.Println("Distance:", distance)
}
Aqui, speedOfLight
é a constante tipada com o tipo int
.
Ela só pode ser usada em operações com outros valores de int
ou convertida explicitamente para um tipo diferente.
Encerramento
Neste artigo, nós olhámos para o que são variáveis e constantes e como declará-las em Go.
Variáveis e constantes são ferramentas críticas na programação. Permitem que desenvolvedores gerenciem e manipulem dados de forma eficiente. Quando você entender como usá-las, você pode melhorar a qualidade do seu código.
Por favor, compartilhe se encontrou isso útil.
Source:
https://www.freecodecamp.org/news/variables-and-constants-in-go/