DMarlon Studio

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.

Go · Constantes y aritmética en DMarlon Studio: el código del ejemplo y su salida en la terminal

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

  • const declara valores que no cambian.
  • iota numera las constantes de un grupo desde 0.
  • int / int descarta los decimales; % da el resto.
  • Para mezclar int y float64 hay 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.