O Go é uma linguagem de programação compilada e de tipagem estática. Este exercício apresenta três funcionalidades importantes da linguagem: pacotes, funções e variáveis.
As aplicações em Go organizam-se em pacotes.
Um pacote é um conjunto de ficheiros de código-fonte que estão no mesmo diretório.
Todos os ficheiros de código-fonte num diretório têm de ter o mesmo nome de pacote.
Quando um pacote é importado, só as entidades (funções, tipos, variáveis, constantes) cujos nomes começam por letra maiúscula podem ser usadas ou acedidas.
O estilo de nomenclatura recomendado em Go é usar camelCase para os identificadores, exceto para aqueles que devem ser acessíveis entre pacotes, que devem usar PascalCase.
package lasagna
O Go tem tipagem estática, o que significa que todas as variáveis têm de ter um tipo definido em tempo de compilação.
As variáveis podem ser definidas especificando explicitamente um tipo:
var explicit int // Explicitly typed
Também podes usar um inicializador, e o compilador atribui à variável o tipo correspondente ao do inicializador.
implicit := 10 // Implicitly typed as an int
Depois de declarada, podes atribuir valores a uma variável com o operador =.
Depois de declarada, o tipo de uma variável nunca muda.
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
As constantes guardam um valor tal como as variáveis, mas o seu valor não pode mudar durante a execução do programa.
As constantes definem-se com a palavra-chave const e podem ser números, carateres, strings ou Boolean:
const Age = 21 // Defines a numeric constant 'Age' with the value of 21
As funções em Go aceitam zero ou mais parâmetros. Os parâmetros têm de ter tipo explícito; não há inferência de tipos.
Os valores são devolvidos pelas funções com a palavra-chave return.
Uma função é invocada indicando o nome da função e passando argumentos para cada um dos seus parâmetros.
Repara que o Go suporta dois tipos de comentários.
Os comentários de uma linha são precedidos por // e os comentários de várias linhas são inseridos entre /* e */.
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
}
Neste exercício vais escrever algum código para te ajudar a cozinhar uma lasanha fabulosa a partir do teu livro de receitas preferido.
Tens quatro tarefas, todas relacionadas com o tempo gasto a cozinhar a lasanha.
Define a constante OvenTime com o número de minutos que a lasanha deve estar no forno.
De acordo com o livro de receitas, o tempo esperado no forno em minutos é 40:
OvenTime
// => 40
Define a função RemainingOvenTime() que recebe como parâmetro os minutos reais que a lasanha já esteve no forno e devolve quantos minutos a lasanha ainda tem de permanecer no forno, com base no tempo esperado no forno em minutos da tarefa anterior.
func RemainingOvenTime(actual int) int {
// TODO
}
RemainingOvenTime(30)
// => 10
Define a função PreparationTime que recebe como parâmetro o número de camadas que adicionaste à lasanha e devolve quantos minutos gastaste a preparar a lasanha, assumindo que cada camada demora 2 minutos a preparar.
func PreparationTime(numberOfLayers int) int {
// TODO
}
PreparationTime(2)
// => 4
Define a função ElapsedTime que recebe dois parâmetros: o primeiro parâmetro é o número de camadas que adicionaste à lasanha e o segundo parâmetro é o número de minutos que a lasanha já esteve no forno.
A função deve devolver quantos minutos, no total, dedicaste a cozinhar a lasanha, ou seja, a soma do tempo de preparação em minutos com o tempo, em minutos, que a lasanha já passou no forno neste momento.
func ElapsedTime(numberOfLayers, actualMinutesInOven int) int {
// TODO
}
ElapsedTime(3, 20)
// => 26
Inscreve-te no Exercism para aprenderes e dominares Go com 35 conceitos167 exercícios, e mentoria humana real, tudo grátis.