Lección 3 · 3 de 20
Constantes y aritmética · Go
Use constantes e iota en Go, opere con + - * / y %, y convierta entre int y float64 para no perder los decimales.

Una constante se declara con const y su valor no puede cambiar: vatRate = 0.21 es el tipo de IVA. Varias constantes pueden ir agrupadas entre paréntesis y, dentro del grupo, iota vale 0 en la primera, 1 en la siguiente y así sucesivamente: Small, Medium y Large valen 0, 1 y 2.
Entre dos enteros, / hace la división entera: 7/3 da 2, sin decimales. % da el resto: 7%3 es 1, la pizza que sobra.
Go no mezcla tipos por su cuenta: price * pizzas sería un error, porque uno es float64 y el otro int. Hay que convertir de forma explícita con float64(pizzas). Con los dos convertidos, float64(pizzas) / float64(guests) da 2.3333333333333335, con todos sus decimales.
price * float64(pizzas) da el total, 87.5, y multiplicado por la constante sale el IVA. Los operadores abreviados cambian una variable sobre sí misma: count += 5 es count = count + 5, count *= 2 la duplica y count++ le suma uno. De 10 se pasa a 15, a 30 y a 31.
Código · main.go
package mainimport "fmt"// A constant never changes.const vatRate = 0.21// iota numbers the constants of a group: 0, 1, 2...const ( Small = iota Medium Large)func main() { pizzas, guests := 7, 3 fmt.Println("Pizzas per guest:", pizzas/guests) // int / int drops decimals fmt.Println("Pizzas left over:", pizzas%guests) // % is the remainder // Mixing int and float64 needs a conversion. share := float64(pizzas) / float64(guests) fmt.Println("Exact share:", share) price := 12.5 total := price * float64(pizzas) fmt.Println("Total:", total, "VAT:", total*vatRate) count := 10 count += 5 // count = count + 5 count *= 2 count++ fmt.Println("Counter:", count) fmt.Println("Sizes:", Small, Medium, Large)}Salida · go run main.go
Pizzas per guest: 2 Pizzas left over: 1 Exact share: 2.3333333333333335 Total: 87.5 VAT: 18.375 Counter: 31 Sizes: 0 1 2
Para recordar
constdeclara valores que no cambian.iotanumera las constantes de un grupo desde 0.int / intdescarta los decimales;%da el resto.- Para mezclar
intyfloat64hay que convertir:float64(x). +=,-=,*=,/=y++abrevian las operaciones.
Ejercicio
Con una constante boxPrice = 2.40, calcule cuántas cajas de 6 huevos se llenan con 75 huevos, cuántos sobran y cuánto cuestan las cajas llenas.