Aula 10
Inferência de Tipos na Linguagem Go (Com Constantes Numéricas)
Summary
# Inferência de Tipos na Linguagem Go
Nesta aula, o foco é sobre a inferência de tipos na linguagem Go. O instrutor demonstra como a inferência de tipos funciona através de exemplos práticos no código.
## Declaração de Variáveis com Inferência de Tipos
1. **Declaração Inicial:**
- O instrutor cria um programa chamado `inferência.go`, define o pacote `main`, e importa o pacote `fmt`.
- Ele declara uma variável `i` do tipo `int`.
```go
var i int
-
Inferência de Tipo:
- Em seguida, declara outra variável
j
utilizando a variáveli
:
var j = i
- O tipo da variável
j
é inferido do tipo dei
, ou seja,j
também será do tipoint
. - Para demonstrar isso, ele usa
fmt.Printf
para exibir o tipo e valor dej
, lembrando que, como não foi atribuído um valor inicial,j
será zero por padrão.
fmt.Printf("Tipo: %T, Valor: %v\n", j, j)
- Em seguida, declara outra variável
-
Comportamento com Constantes Numéricas:
- O instrutor explica que se ao declarar uma variável não for explicitado um tipo e usar uma constante numérica (e.g.,
36
), o tipo inferido seráint
:
var e = 36
- Se a constante for um número decimal (e.g.,
36.87
), o tipo inferido seráfloat64
.
var e = 36.87
- O instrutor explica que se ao declarar uma variável não for explicitado um tipo e usar uma constante numérica (e.g.,
-
Números Complexos:
- Ele também aborda números complexos, mostrando que uma expressão como
0.64 + 0.3i
fará com que a variável inferida seja do tipocomplex128
.
var c = 0.64 + 0.3i
- Ele também aborda números complexos, mostrando que uma expressão como
-
Resultados:
- Os tipos e valores resultantes são impressos, confirmando o comportamento esperado de cada declaração.
Conclusão
A inferência de tipos é uma característica poderosa da linguagem Go, permitindo que variáveis adquiram tipos baseados no contexto em que são atribuídas, facilitando a escrita do código sem a necessidade de especificar tipos explicitamente para cada variável.
Video Transcript
Fala pessoal, na esta aula gostaria de falar mais sobre a inferência de tipos na linguagem Go
Então vamos supor que você está declarando a variável aqui, já tem um programa aqui
inferência.go que eu criei e já definiu o pacote main, importei o fmt se precisar e a função main aqui, a função principal
Vamos supor que eu tenho, por exemplo, um variable, vamos declarar uma variável com a palavra var
o nome da variável vai ser i e o tipo vai ser int, vai ser inteiro
Agora o que acontece se eu fizer esse cara aqui, se eu fizer var j igual a i
Então, qual vai ser o tipo da variável j?
Quando você declara uma variável aqui, dessa maneira, sem dizer o tipo dessa variável explicitamente, ele vai inferir que o tipo vai vir da variável aqui
ou da expressão do lado direito do sinal de igual, tá certo?
Então, isso significa o que? Essa variável j vai ser do tipo que o i é, nesse caso i foi declarado como variável de tipo int
então, o j vai ser de tipo int porque o i tem tipo int
tá?
Para você ver isso, eu vou botar o fmt printf e eu vou mostrar o tipo da variável j com percentual t
e olha que o t aqui é em letter maiúsculo e vou dar, imprimir o valor da variável com percentual v e minúsculo, tá?
Vamos dar a vírgula para adicionar as variáveis correspondentes, vou usar j para os dois
então, o primeiro tipo da variável que você passar nesse caso j vai aparecer e o valor da variável, nesse caso j também vai aparecer lá
a note que eu não defini nenhum valor para j, então ele vai usar o valor zero, né?
Se lembra que quando você declarar uma variável no go e você não fornece um valor inicial, ele vai inicializar o valor da variável com o valor zero dependendo do tipo
nesse caso, o tipo é um inteiro, o valor zero de inteiro é zero, tá? Então, ele vai dizer zero para o valor
e a gente espera que o tipo seja o que? Seja o tipo de j seja int devido à inferência de tipos
vou salvar aqui, vou lá no terminal e vou dar Google Run aqui, inferência, outro Google, tá?
Ah, esqueci de adicionar o t no printf, salvar
tá, esqueci de adicionar a quebra de linha, barra n ali
então, o tipo é int e o valor é zero como a gente esperava
tá bom? Então, essa é a inferência de tipo, agora eu quero falar em outro detalhe da inferência de tipo
isso é quando você tem, deixa eu comentar essa cara aqui, vai ser ignorador, que é compilador, se lembra?
barra barra vai aumentar, qualquer coisa que tiver à direita da barra barra na mesma linha vai ser ignorado
pelo compilador, agora quando você tiver, você estiver declarando variável, por exemplo, vai e e
e você não dizer o tipo explicitamente e no lado direito do sinal de igual você tiver uma constante numérica sem tipo
o que é um constante numérica sem tipo, é só o número por si próprio, por exemplo, se eu dizer 36 aqui
esse cara aqui é uma constante numérica sem tipo, tá?
então, o valor de e vai ser o que? que será o valor aqui?
esse caso vai ser int, mas você tem que tomar cuidado porque o tipo, essa constante numérica aqui
quando for deduzido pela variável aqui, pela declaração e definição da variável, vai mudar de acordo com o contexto que esse cara tiver
nesse caso, a gente tem um número sem nenhum ponto, então ele vai ter esse cara como, você está falando de inteiro
então essa variável vai ser inteiro, tá? vou dar o mesmo print aqui para você ver e está int, valor 36
agora, se você mudar 36 aqui, e esse 36.87, agora esse cara aqui tem a vírgula ou ponto afrutuante, tá?
tem o valor fracionário, decimal aqui, então nesse caso a variável vai ser deduzida como um float 64
o contexto que é diferente, essa constante numérica, tá? embora que por si próprio não tenha um tipo
a nova variável vai deduzir o tipo por ser de ponto afrutuante, então float 64 como tipo, valor 36.87
mesmo coisa também acontece, se o valor aqui em vez de ser esse cara, foi um valor a número complexo
constante complexa, por exemplo, 0.64 mais 0.3i e a unidade imaginária
esse número aqui é um número complexo, parte real é 0.64, parte imaginária é 0.3, vamos ver qual é o tipo e valor agora
o dinote que o tipo virou complexo, 128, esse é o tipo para números complexos no go
o valor esse cara aqui, 0.64 mais 0.3i, tá?
então essa inferência de tipo na linguagem go, pra sua aula é só e até a próxima
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: