Capítulo 7. Estructuras e interfaces

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Aunque nos sería posible escribir programas utilizando únicamente los tipos de datos incorporados de Go, en algún momento resultaría bastante tedioso. Considera un programa que interactúe con formas:

package main

import ("fmt"; "math")

func distance(x1, y1, x2, y2 float64) float64 {
    a := x2  x1
    b := y2  y1
    return math.Sqrt(a*a + b*b)
}

func rectangleArea(x1, y1, x2, y2 float64) float64 {
    l := distance(x1, y1, x1, y2)
    w := distance(x1, y1, x2, y1)
    return l * w
}

func circleArea(x, y, r float64) float64 {
    return math.Pi * r*r
}

func main() {
    var rx1, ry1 float64 = 0, 0
    var rx2, ry2 float64 = 10, 10
    var cx, cy, cr float64 = 0, 0, 5

    fmt.Println(rectangleArea(rx1, ry1, rx2, ry2))
    fmt.Println(circleArea(cx, cy, cr))
}

Este programa halla el área de un rectángulo y un círculo. Llevar la cuenta de todas las coordenadas dificulta ver lo que está haciendo el programa y probablemente conducirá a errores.

Estructuras

Una forma fácil de mejorar este programa es utilizar una estructura. Una estructura es un tipo que contiene campos con nombre. Por ejemplo, podríamos representar un círculo así:

type Circle struct {
    x float64
    y float64
    r float64
}

La palabra clave type introduce un nuevo tipo. Va seguida del nombre del tipo (Circle), la palabra clave struct para indicar que estamos definiendo un tipo struct, y una lista de campos dentro de ...

Get Presentación de Go now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.