Go tem tipos numéricos básicos que podem representar conjuntos de valores inteiros ou de ponto flutuante. Existem tipos diferentes dependendo do tamanho do valor que você precisa e da arquitetura do computador onde a aplicação está rodando (por exemplo, 32 bits e 64 bits).
Para este exercício, você vai lidar apenas com:
int: por exemplo, 0, 255, 2147483647.
Um inteiro com sinal que tem pelo menos 32 bits de tamanho (faixa de valores: -2147483648 a 2147483647).
Mas isso vai depender da arquitetura do sistema.
A maioria dos computadores modernos é de 64 bits, então int terá 64 bits de tamanho (faixa de valores: -9223372036854775808 a 9223372036854775807).
float64: por exemplo, 0.0, 3.14.
Contém o conjunto de todos os números de ponto flutuante de 64 bits.
uint: por exemplo, 0, 255.
Um inteiro sem sinal que tem o mesmo tamanho que int (faixa de valores: 0 a 4294967295 para 32 bits e 0 a 18446744073709551615 para 64 bits)
Os números podem ser convertidos para outros tipos numéricos por meio da conversão de tipos.
Go suporta muitos operadores aritméticos padrão:
| Operador | Exemplo |
|---|---|
+ |
4 + 6 == 10 |
- |
15 - 10 == 5 |
* |
2 * 3 == 6 |
/ |
13 / 3 == 4 |
% |
13 % 3 == 1 |
Na divisão de inteiros, o resto é descartado (por exemplo, 5 / 2 == 2).
Go tem atribuição abreviada para os operadores acima (por exemplo, a += 5 é uma forma curta de a = a + 5).
Go também suporta as instruções de incremento e decremento ++ e -- (por exemplo, a++).
A conversão entre tipos é feita por meio de uma função com o nome do tipo para o qual você quer converter. Por exemplo:
var x int = 42 // x has type int
f := float64(x) // f has type float64 (ie. 42.0)
var y float64 = 11.9 // y has type float64
i := int(y) // i has type int (ie. 11)
Em muitas linguagens você pode fazer operações aritméticas com variáveis de tipos diferentes, mas em Go isso dá erro. Por exemplo:
var x int = 42
// this line produces an error
value := float32(2.0) * x // invalid operation: mismatched types float32 and int
// you must convert int type to float32 before performing arithmetic operation
value := float32(2.0) * float32(x)
Neste exercício, você vai escrever código para analisar a produção de uma fábrica de carros.
Os carros são produzidos em uma linha de montagem. A linha de montagem tem uma certa velocidade, que pode ser alterada. Quanto maior a velocidade da linha de montagem, mais carros são produzidos. No entanto, mudar a velocidade da linha de montagem também muda o número de carros produzidos com sucesso, ou seja, carros sem nenhum erro na produção.
Implemente uma função que recebe o número de carros produzidos por hora e a taxa de sucesso e calcula o número de carros produzidos com sucesso por hora.
A taxa de sucesso é dada como porcentagem, de 0 a 100:
CalculateWorkingCarsPerHour(1547, 90)
// => 1392.3
Observação: o valor de retorno deve ser um float64.
Implemente uma função que recebe o número de carros produzidos por hora e a taxa de sucesso e calcula quantos carros são produzidos com sucesso a cada minuto:
CalculateWorkingCarsPerMinute(1105, 90)
// => 16
Observação: o valor de retorno deve ser um int.
Normalmente, cada carro custa $10.000 para ser produzido individualmente, independentemente de ser bem-sucedido ou não. Mas com um pouco de planejamento, 10 carros podem ser produzidos juntos por $95.000.
Por exemplo, 37 carros podem ser produzidos da seguinte forma: 37 = 3 x grupos de dez + 7 carros individuais
Então o custo para 37 carros é: 3*95.000+7*10.000=355.000
Implemente a função CalculateCost, que calcula o custo de produção de um número de carros, independentemente de serem bem-sucedidos ou não:
CalculateCost(37)
// => 355000
CalculateCost(21)
// => 200000
Observação: o valor de retorno deve ser um uint.
Crie sua conta no Exercism para aprender e dominar Go com 34 conceitos165 exercícios e mentoria humana de verdade, tudo de graça.