Da trilha de Go Este conceito ainda não saiu como card do dia. ir para o card de hoje

Go Fundamentos Básico

Tipos básicos e conversões

Go é uma linguagem fortemente tipada: cada variável tem um tipo fixo e o compilador não converte tipos automaticamente. Os tipos básicos mais usados são int, float64, string e bool. Diferente de linguagens como Python ou JavaScript, você precisa ser explícito ao misturar tipos — por exemplo, não pode somar um int com um float64 sem converter um dos dois.

A conversão entre tipos numéricos é feita com a sintaxe T(v), como float64(idade) ou int(preco). Já para converter entre string e números, a biblioteca padrão oferece o pacote strconv, com funções como strconv.Atoi, strconv.Itoa e strconv.ParseFloat. Tentar usar string(65) não dá "65", e sim o caractere 'A' — um erro clássico.

Outro ponto de atenção é o overflow: cada tipo tem um intervalo limitado. int8 vai de -128 a 127; somar 1 em 127 dá -128 silenciosamente. Já float64 tem precisão finita, então nem todo número decimal é representado exatamente. Entender esses limites evita bugs sutis.

Pontos-chave

  • Go não faz conversão implícita entre tipos: int e float64 não se misturam sem T(v).
  • Use strconv.Atoi/strconv.Itoa para converter entre string e int, e strconv.ParseFloat para float64.
  • string(65) retorna "A", não "65": para número → texto use strconv.Itoa.
  • Cada tipo numérico tem limites; estourar um int8 causa overflow silencioso.
  • bool só aceita true/false e não converte para número em Go.
tipos_basicos.go
package main

import (
	"fmt"
	"strconv"
)

func main() {
	// Tipos básicos
	var idade int = 30
	var altura float64 = 1.75
	var nome string = "Ana"
	var ativo bool = true

	fmt.Println(nome, idade, altura, ativo)

	// Conversão explícita entre numéricos
	alturaCm := altura * 100          // float64
	alturaCmInt := int(alturaCm)      // conversão explícita
	fmt.Println("altura em cm (int):", alturaCmInt)

	// int -> float64
	media := float64(idade) / 2.0
	fmt.Println("metade da idade:", media)

	// string <-> número com strconv
	texto := strconv.Itoa(idade)      // int -> string
	fmt.Printf("idade como string: %q\n", texto)

	n, err := strconv.Atoi("42")      // string -> int
	if err != nil {
		fmt.Println("erro:", err)
	} else {
		fmt.Println("42 + 1 =", n+1)
	}

	// Overflow em int8
	var pequeno int8 = 127
	pequeno++ // estoura o limite
	fmt.Println("127++ em int8:", pequeno)
}

Exercícios

  1. 1
    Fácil

    Convertendo idade para texto

    Crie um programa que declare uma variável idade do tipo int com valor 25 e converta-a para string usando strconv.Itoa. Imprima a frase Tenho 25 anos usando fmt.Println com a string convertida.

    Resolver
  2. 2
    Médio

    Média de notas com float64

    Leia duas notas como string ("7.5" e "8.0"), converta cada uma para float64 com strconv.ParseFloat, calcule a média e imprima com duas casas decimais no formato Média: 7.75.

    Resolver
  3. 3
    Desafio

    Detectando overflow em int8

    Escreva uma função somaSegura(a, b int8) (int8, bool) que soma dois int8 e retorna o resultado e um booleano indicando se houve overflow. No main, teste com (100, 50) e (10, 20) e imprima overflow ou o valor. Use conversão explícita para int para detectar o estouro.

    Resolver

Continue estudando