Go es un lenguaje de programación compilado y de tipado estático. Este ejercicio presenta tres características fundamentales del lenguaje: los paquetes, las funciones y las variables.
Las aplicaciones de Go se organizan en paquetes.
Un paquete es un conjunto de archivos fuente que se encuentran en el mismo directorio.
Todos los archivos fuente de un directorio deben compartir el mismo nombre de paquete.
Cuando se importa un paquete, solo se pueden usar o consultar las entidades (funciones, tipos, variables, constantes) cuyos nombres empiecen por mayúscula.
El estilo recomendado para nombrar en Go es escribir los identificadores en camelCase, salvo los que deban ser accesibles desde otros paquetes, que deben escribirse en PascalCase.
package lasagna
Go tiene tipado estático, lo que significa que todas las variables deben tener un tipo definido en tiempo de compilación.
Las variables se pueden definir especificando un tipo de forma explícita:
var explicit int // Explicitly typed
También puedes usar un inicializador, y el compilador asignará a la variable un tipo que coincida con el del inicializador.
implicit := 10 // Implicitly typed as an int
Una vez declaradas, se pueden asignar valores a las variables con el operador =.
Una vez declarada, el tipo de una variable no puede cambiar nunca.
count := 1 // Assign initial value
count = 2 // Update to new value
count = false // This throws a compiler error due to assigning a non `int` type
Las constantes contienen un dato igual que las variables, pero su valor no puede cambiar durante la ejecución del programa.
Las constantes se definen con la palabra clave const y pueden ser números, caracteres, strings o valores booleanos:
const Age = 21 // Defines a numeric constant 'Age' with the value of 21
Las funciones de Go aceptan cero o más parámetros. Los parámetros deben tener un tipo explícito; no hay inferencia de tipos.
Los valores se devuelven desde las funciones con la palabra clave return.
Una función se invoca indicando el nombre de la función y pasando argumentos para cada uno de sus parámetros.
Ten en cuenta que Go admite dos tipos de comentarios.
Los comentarios de una sola línea van precedidos de //, y los comentarios multilínea se insertan entre /* y */.
package greeting
// Hello is a public function.
func Hello (name string) string {
return hi(name)
}
// hi is a private function.
func hi (name string) string {
return "hi " + name
}
En este ejercicio vas a escribir algo de código para ayudarte a cocinar una lasaña espectacular siguiendo tu libro de cocina favorito.
Tienes cuatro tareas, todas relacionadas con el tiempo que se tarda en cocinar la lasaña.
Define la constante OvenTime con cuántos minutos debe estar la lasaña en el horno.
Según el libro de cocina, el tiempo esperado en el horno en minutos es 40:
OvenTime
// => 40
Define la función RemainingOvenTime() que toma como parámetro los minutos reales que la lasaña ha estado en el horno y devuelve cuántos minutos tiene que seguir estando la lasaña en el horno, según el tiempo esperado en el horno en minutos de la tarea anterior.
func RemainingOvenTime(actual int) int {
// TODO
}
RemainingOvenTime(30)
// => 10
Define la función PreparationTime que toma como parámetro el número de capas que añadiste a la lasaña y devuelve cuántos minutos pasaste preparando la lasaña, suponiendo que cada capa te lleva 2 minutos de preparación.
func PreparationTime(numberOfLayers int) int {
// TODO
}
PreparationTime(2)
// => 4
Define la función ElapsedTime que toma dos parámetros: el primer parámetro es el número de capas que añadiste a la lasaña, y el segundo parámetro es el número de minutos que la lasaña ha estado en el horno.
La función debe devolver cuántos minutos en total has trabajado en cocinar la lasaña, que es la suma del tiempo de preparación en minutos y el tiempo en minutos que la lasaña ha estado en el horno en ese momento.
func ElapsedTime(numberOfLayers, actualMinutesInOven int) int {
// TODO
}
ElapsedTime(3, 20)
// => 26
Regístrate en Exercism para aprender y dominar Go con 35 conceptos167 ejercicios y mentoría humana real, todo gratis.