Rutas
/
Go
Go
/
Ejercicios
/
Robot de fiesta
Robot de fiesta

Robot de fiesta

Ejercicio de aprendizaje

Introducción

Paquetes

En Go, una aplicación se organiza en paquetes. Un paquete es una colección de archivos fuente que se encuentran en la misma carpeta. Todos los archivos fuente de una carpeta deben tener el mismo nombre de paquete al principio del archivo. Por convención, los paquetes se nombran igual que la carpeta en la que se encuentran.

package greeting

Go proporciona una extensa biblioteca estándar de paquetes que puedes usar en tu programa con la palabra clave import. Los paquetes de la biblioteca estándar se importan usando su nombre.

package greeting

import "fmt"

Después, se hace referencia a un paquete importado con el nombre del paquete:

world := "World"
fmt.Sprintf("Hello %s", world)

Go determina si se puede llamar a un elemento desde el código de otros paquetes según cómo esté declarado. Para que una función, un tipo, una variable, una constante o un campo de una estructura sean visibles desde el exterior (lo que se conoce como exportado), el nombre debe empezar por mayúscula.

package greeting

// Hello is a public function (callable from other packages).
func Hello(name string) string {
    return "Hello " + name
}

// hello is a private function (not callable from other packages).
func hello(name string) string {
    return "Hello " + name
}

Formato de string

Go proporciona un paquete integrado llamado fmt (paquete de formato) que ofrece una variedad de funciones para manipular el formato de la entrada y la salida. La función más utilizada es Sprintf, que usa verbos como %s para interpolar valores en un string y devuelve ese string.

import "fmt"

food := "taco"
fmt.Sprintf("Bring me a %s", food)
// Returns: Bring me a taco

En Go, los valores de coma flotante se formatean cómodamente con los verbos de Sprintf: %g (representación compacta), %e (exponente) o %f (sin exponente). Los tres verbos permiten controlar el ancho del campo y la posición numérica.

import "fmt"

number := 4.3242
fmt.Sprintf("%.2f", number)
// Returns: 4.32

Puedes encontrar una lista completa de los verbos disponibles en la documentación del paquete de formato.

fmt contiene otras funciones para trabajar con strings, como Println, que simplemente imprime en la consola los argumentos que recibe, y Printf, que formatea la entrada igual que Sprintf antes de imprimirla.

Instrucciones

Había una vez un programador excéntrico que vivía en una casa extraña con ventanas enrejadas. Un día aceptó un encargo de un portal de empleo en línea para construir un robot de fiestas. Se supone que el robot saluda a la gente y la ayuda a llegar a su asiento. La primera edición era muy técnica y dejaba ver la falta de habilidades sociales del programador. Parte de eso también se trasladó a la siguiente edición.

1. Da la bienvenida a un nuevo invitado a la fiesta

Implementa la función Welcome para que devuelva un mensaje de bienvenida usando el nombre dado:

Welcome("Christiane")
// => Welcome to my party, Christiane!

2. Da la bienvenida a un nuevo invitado que cumple años hoy

Implementa la función HappyBirthday para que devuelva un mensaje de cumpleaños usando el nombre y la edad de la persona. Por desgracia, el programador es un poco presumido, así que el robot tiene que demostrar que se sabe el cumpleaños de cada invitado.

HappyBirthday("Frank", 58)
// => Happy birthday Frank! You are now 58 years old!

3. Da indicaciones

Implementa la función AssignTable para dar indicaciones. Debe aceptar 5 parámetros.

  • El nombre del nuevo invitado al que saludar (string)
  • El número de mesa (int)
  • El nombre de la persona que se sentará al lado (string)
  • La dirección en la que se encuentra la mesa (string)
  • La distancia a la mesa (float64)

El formato exacto del resultado puede verse en el ejemplo siguiente.

El robot proporciona el número de mesa en un formato de 3 dígitos. Si el número tiene menos de 3 dígitos, se le añaden ceros a la izquierda hasta llegar a 3 dígitos (p. ej., 3 se convierte en 003). El robot también menciona la distancia a la mesa. Por suerte, solo con una precisión limitada a 1 dígito.

AssignTable("Christiane", 27, "Frank", "on the left", 23.7834298)
// =>
// Welcome to my party, Christiane!
// You have been assigned to table 027. Your table is on the left, exactly 23.8 meters from here.
// You will be sitting next to Frank.
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Go Exercism

¿Listo para empezar Robot de fiesta?

Regístrate en Exercism para aprender y dominar Go con 34 conceptos165 ejercicios y mentoría humana real, todo gratis.