Avatar ·

Valor máximo para o tipo int em Go: como obtê-lo e usá-lo?

Olá a todos! Comecei a estudar Go recentemente e me deparei com uma situação confusa. Estou escrevendo um programa simples para calcular fatorial e preciso saber o valor máximo que o tipo `int` pode armazenar. Em outras linguagens (como C++ ou Java), estou acostumado com constantes como `INT_MAX` ou `Integer.MAX_VALUE`. Mas em Go não consigo encontrar um análogo. Tentei fazer assim: ```go package main import "fmt" func main() { var i int = 2147483647 // pensei que era o máximo para int fmt.Println(i) i = i + 1 fmt.Println(i) // esperava um erro, mas obtive um número negativo } ``` Para minha surpresa, o programa compilou e até executou. Mas na ocorrência de overflow, obtive um valor negativo, e não um erro de compilação ou runtime. Isso me deixou confuso. Perguntas: 1. Como descobrir o valor máximo para `int` em Go? 2. Por que não ocorre um erro em caso de overflow? 3. O valor máximo depende da arquitetura (32-bit vs 64-bit)? 4. Existe uma maneira segura de verificar se