¿Alguien podria explicarme por favor la razon por la que go hace esto? ¿acaso es porque es interpretado?
buen aporte hafnio
Esto es como estar aprendiendo c otra vez jaja
mi solucion a una simple calculadora:
package main
import"fmt"const initialMessage ="BIENVENIDO YA PUEDES EMPEZAR A UTILIZAR ESTA CALCULADORA \n Que tipo de operacion deseas realizar ? \n tenemos disponibles: sumar, restar, dividir, multiplicar \n introduce el nombre de la operacion que deseas:"func main(){var operation string
fmt.Println(initialMessage) fmt.Scanf("%s",&operation)validate(operation)}func validate(op string){if op =="sumar"|| op =="restar"|| op =="dividir"|| op =="multiplicar"{ fmt.Printf("La operacion: %s esta disponible \n", op)calc(op)}else{ fmt.Printf("La operacion: %s no esta disponible", op)}}func calc(t string){var a int
var b int
var result int
fmt.Print("Primer Numero:") fmt.Scanf("%d",&a) fmt.Print("Segundo Numero:") fmt.Scanf("%d",&b)if t =="sumar"{ result = a + b
}elseif t =="restar"{ result = a - b
}elseif t =="dividir"{ result = a / b
}elseif t =="multiplicar"{ result = a * b
} fmt.Printf("Este es el resultado : %d \n", result)}
package main
import "fmt"
func main() {
var num1 int32
var num2 int32
var suma1 int32
var resta1 int32
var opc int32
fmt.Println(" ------ Calculadora -------")
fmt.Println("Presione 1 si desea sumar o 2 si desea restar")
fmt.Scanf("%d\n", &opc)
fmt.Println("Ingrese el primer valor")
fmt.Scanf("%d\n", &num1)
fmt.Println("Ingrese el segundo valor")
fmt.Scanf("%d\n", &num2)
if opc == 1 {
suma1 = Suma(num1, num2)
fmt.Println("El resultado de la suma es ", suma1)
}else if opc == 2 {
resta1 = Resta(num1, num2)
fmt.Println("El resultado de la resta es ", resta1)
}else {
fmt.Printf("Su opción es incorrecta")
}
}
Debí cambiar las comillas que encierran texto por estas " "
todo lo demás funciona genial
Hola chicos, esta es la solución a mi reto:
package main
import"fmt"func main(){constEXIT_OPTION int =5var option int =0printWelcome()for option !=EXIT_OPTION{ option =setMenu()evaluateOption(option)}}func printWelcome(){var welcome string = fmt.Sprint("*.......................................*\n","* *\n","* CALCULATOR *\n","* *\n","*.......................................*\n\n","Welcome to the minimalist calculator\n",) fmt.Println(welcome)}func setMenu() int {var option int
var menu string = fmt.Sprint("Select one option: \n","[1] Add \n","[2] Substract \n","[3] Multiply \n","[4] Divide \n","[5] Exit \n\n","> Select a option: ",) fmt.Printf(menu) fmt.Scanf("%d",&option)return option
}func evaluateOption(option int){switch option {case1:add()case2:substract()case3:multiply()case4:divide()case5:exit()default: fmt.Printf(" Wrong operation. Try again")}}func add(){var( firstNumber int
secondNumber int
result int
) fmt.Print(" Your option was sum\n\n") fmt.Print(" First number: ") fmt.Scanf("%d",&firstNumber) fmt.Print(" Second number: ") fmt.Scanf("%d",&secondNumber) result = firstNumber + secondNumber
fmt.Printf("\n The sum of %d and %d is %d\n\n", firstNumber, secondNumber, result)}func substract(){var( firstNumber int
secondNumber int
result int
) fmt.Print(" Your option was substraction\n\n") fmt.Print(" First number: ") fmt.Scanf("%d",&firstNumber) fmt.Print(" Second number: ") fmt.Scanf("%d",&secondNumber) result = firstNumber - secondNumber
fmt.Printf(" The substraction of %d and %d is %d\n\n", firstNumber, secondNumber, result)}func multiply(){var( firstNumber int
secondNumber int
result int
) fmt.Print(" Your option was multiplication\n\n") fmt.Printf(" First number: ") fmt.Scanf("%d",&firstNumber) fmt.Print(" Second number: ") fmt.Scanf("%d",&secondNumber) result = firstNumber * secondNumber
fmt.Printf(" The multiplication of %d and %d is %d\n\n", firstNumber, secondNumber, result)}func divide(){var( firstNumber int
secondNumber int
result int
modulus int
) fmt.Print(" Your option was division\n\n") fmt.Print(" First number: ") fmt.Scanf("%d",&firstNumber) fmt.Print(" Second number: ") fmt.Scanf("%d",&secondNumber) result = firstNumber / secondNumber
modulus = firstNumber % secondNumber
fmt.Printf(" The division of %d and %d is %d and the modulus is %d\n\n", firstNumber, secondNumber, result, modulus)}func exit(){var exitMsg = fmt.Sprint("\nThanks for using the minimalist calculator!\n","We hope to see you again soon :)\n",) fmt.Println(exitMsg)}
Cuando ejecuto mi código no hace una pausa después de pedir el primer valor sino que hace las 2 preguntas al mismo tiempo, esto hace que solo tome un solo valor. ¿Alguien sabrá por qué?
este es mi codigo
package main
import"fmt"func main(){seleccionDeOperacion()}func seleccionDeOperacion(){var opcion int =0 fmt.Println("-----CALCULADORA-----") fmt.Println("------OPERACIÓN------") fmt.Println("1-Suma") fmt.Println("2-Resta") fmt.Println("3-Multiplicación") fmt.Println("4-División") fmt.Printf("Selecciona el tipo de operación:") fmt.Scanf("%d",&opcion)switch opcion {case1: fmt.Println("Respuesta:",suma())breakcase2: fmt.Println("Respuesta",resta())breakcase3: fmt.Println("Respuesta",multiplicacion())breakcase4: fmt.Println("Respuesta",division())breakdefault: fmt.Println("No hay un valor válido")break}}func suma() int{var( a =0 b =0) fmt.Print("Ingrese el primer número:") fmt.Scanf("%d",&a) fmt.Print("Ingrese el segundo número:") fmt.Scanf("%d",&b)return a + b
}func resta() int{var( a =0 b =0) fmt.Print("Ingrese el primer número:") fmt.Scanf("%d",&a) fmt.Print("Ingrese el segundo número:") fmt.Scanf("%d",&b)return a - b
}func multiplicacion() int{var( a =0 b =0) fmt.Print("Ingrese el primer número:") fmt.Scanf("%d",&a) fmt.Print("Ingrese el segundo número:") fmt.Scanf("%d",&b)return a * b
}func division() int{var( a =0 b =0) fmt.Print("Ingrese el primer número:") fmt.Scanf("%d",&a) fmt.Print("Ingrese el segundo número:") fmt.Scanf("%d",&b)return a / b
}
package main
import("fmt")func main(){ fmt.Println("********************************") fmt.Println("Calculadora V.1.0.0") fmt.Println("********************************") n1,n2:=0,0 fmt.Print("Digite el primer numero (N1): ") fmt.Scanf("%d",&n1) fmt.Print("Digite el segundo numero (N2): ") fmt.Scanf("%d",&n2) suma,resta:=Operate(n1, n2) fmt.Println("> Resultados:") fmt.Printf("N1 + N2 = %d\n", suma) fmt.Printf("N1 - N2 = %d\n", resta)}// Operate realiza la suma y la resta de 2 valores dadosfunc Operate(n1, n2 int)(suma int, resta int){ suma = n1 + n2
resta = n1 - n2
return suma, resta
}
Go es bastante divertido, aunque siento un enorme parecido a Java pero mucho más fácil de entender.
package main
import"fmt"func main(){welcome()result()goodBye()}func welcome(){ fmt.Println(" /*************************************\\") fmt.Println("********** Bienvenido a calulator v0.1 by Platzi **********") fmt.Println(" \\*************************************/")}func getNumbers()(int,int){var numbert1 int
var numbert2 int
fmt.Println("Ingresa dos números ENTEROS separados por un espacio.\nEl 0 es el valor por defecto.") fmt.Scanf("%d %d",&numbert1,&numbert2)return numbert1, numbert2
}func result(){ numbert1,numbert2:=getNumbers() fmt.Printf("Número %d y Número %d\n", numbert1, numbert2) fmt.Printf("Sumatoria = %d\n",sum(numbert1, numbert2)) fmt.Printf("Resta = %d\n",sust(numbert1, numbert2))}func goodBye(){ fmt.Println("¡Gracias por usar! :D Go es divertido!") fmt.Println("***********************************************************")}func sum(a int, b int) int{return a+b
}func sust(a int, b int) int{return a-b
}
Está muy bien la división del código en funciones creo que es lo correcto a la hora de desarrollar, “divide y vencerás”.
Mi única sugerencia sería evitar capturar un valor del usuario en una misma ejecución, puede causar problemas de usabilidad en tu programa.
¡Muchas gracias! Así será.
Mi calculadora 😄
package main
import("fmt")func main(){var tipoOperacion int8
fmt.Println("Esta es una aplicación muy básica que solo permite realizar una operación matemática entre dos números distintos....")for{ fmt.Println("¿Qué tipo de operación desea efectuar?") fmt.Println("1. Suma") fmt.Println("2. Resta") fmt.Println("3. multiplicación") fmt.Println("4. División") fmt.Scanf("%d",&tipoOperacion)if tipoOperacion >0&& tipoOperacion <5{break} fmt.Println("Disculpe, el número introducido no es válido")} fmt.Printf("Su resultado es: %.2f",executeOperation(tipoOperacion,getData()))}func getData()[2]float32 {var datos [2]float32
fmt.Println("Introduzca dos datos (A y B), tenga en cuenta que en la resta el dato 'A' se restará el dato 'B' y que en el caso la división el dato 'B' será el denominador del dato 'A'") fmt.Print("A: ") fmt.Scanf("%f",&datos[0]) fmt.Print("B: ") fmt.Scanf("%f",&datos[1])return datos
}func executeOperation(tipoOperacion int8, datos [2]float32) float32 {var total float32
switch tipoOperacion {case1: total = datos[0]+ datos[1]case2: total = datos[0]- datos[1]case3: total = datos[0]* datos[1]case4: total = datos[0]/ datos[1]}return total
}
Este es mi codigo:
package main
import"fmt"func main(){Calcular(ImprimirCalculadora())}func ImprimirCalculadora()(int, int){returnObtenerValor("Obtener el primer valor: ",1),ObtenerValor("Obtener el segundo valor: ",1)}func ObtenerValor(texto string, valor int) int { fmt.Print(texto) fmt.Scanf("%d\n",&valor)return valor
}func Calcular(valorUno int, valorDos int){ImprimirResultado("suma", valorUno, valorDos, valorUno + valorDos)ImprimirResultado("resta", valorUno, valorDos, valorUno - valorDos)ImprimirResultado("multiplicación", valorUno, valorDos, valorUno * valorDos)ImprimirResultado("División", valorUno, valorDos, valorUno / valorDos)}func ImprimirResultado(operacion string, valorUno int, valorDos int, resultado int){ fmt.Printf("\n La %s de %d y de %d es de %d", operacion, valorUno, valorDos, resultado)}
Saludos
package main
import"fmt"const a int =5const b int =10func main(){suma:=suma(a,b)resta:=resta(a,b) fmt.Printf("El resultado de la suma es: %d\n", suma) fmt.Printf("El resultado de la resta es: %d\n", resta)}func suma(a int, b int)int{return a+b
}func resta(a int, b int)int{return a-b
}
El scanf para que no salte el seguido escaner
package main
import"fmt"//textosconst bienvenido string ="\nBienvenido a la calculadora de go \n"const mensaje1 string ="\nIngrese numero 1:\n"const mensaje2 string ="\nIngrese numero 2:\n"const resultado string ="\nEl resultado: {%d}. \n"const operador1 string ="\n Operacion suma:\n"const operador2 string ="\n Operacion resta:\n"const separador string ="==========================================="//============================func main(){ fmt.Printf(bienvenido)proceso()}func proceso(){//variablesvar numero1 int =0var numero2 int =0/////////////////////////// fmt.Printf(separador) fmt.Printf(operador1) fmt.Printf(mensaje1) fmt.Scanf("%d Scanf",&numero1) fmt.Printf(mensaje2) fmt.Scanf("%d Scanf",&numero2) fmt.Printf(resultado,suma(numero1, numero2)) fmt.Printf(separador)//inicializar numero1 =0 numero2 =0/////// fmt.Printf(operador2) fmt.Printf(mensaje1) fmt.Scanf("%d Scanf",&numero1) fmt.Printf(mensaje2) fmt.Scanf("%d Scanf",&numero2) fmt.Printf(resultado,resta(numero1, numero2)) fmt.Printf(separador)}func suma(a int, b int) int {return a + b
}func resta(a int, b int) int {return a - b
}
package main
import"fmt"func main(){var( num1 int
num2 int
sum int
subt int
mult int
div float32
) fmt.Print("Type the first number: ") fmt.Scanf("%d",&num1) fmt.Print("Type the second number: ") fmt.Scanf("%d",&num2) sum, subt, mult, div =calc(num1, num2) fmt.Println("Results:") fmt.Printf("Sum: %d\n", sum) fmt.Printf("Subtraction: %d\n", subt) fmt.Printf("Multiplation: %d\n", mult) fmt.Printf("Division: %.2f\n", div)}func calc(num1 int, num2 int)(int, int, int, float32){return num1 + num2, num1 - num2, num1 * num2,float32(num1)/float32(num2)}
alguien sabe por que cuando trato de tomar varios datos en mi funcion get_personal_data() solo me pide el primer dato? los otros dos no los toma
package main
import"fmt"constHELLO_USER string ="Hola %s %s, Bienvenido al fascinante mundo de Go\n"func main(){ fmt.Print("Ingresa tu nombre:")name:=get_text() fmt.Print("Ingresa tu apellido:")lastname:=get_text() age, email,phone_number:=get_personal_data() fmt.Printf(HELLO_USER, name, lastname) fmt.Printf("tu edad: %d.\ntu email: %s.\ntu numero de telefono: %s.\n",age,email,phone_number)}func get_text() string{var text string
fmt.Scanf("%s",&text)return text
}func get_personal_data()(int,string,string){var age int
var email string
var phone_number string
fmt.Println("Que edad tienes?") fmt.Scanf("%d",age) fmt.Println("cual es tu email?") fmt.Scanf("%s",email) fmt.Println("Cual es tu numero de telefono?") fmt.Scanf("%s",phone_number)return age,email,phone_number
}
Te falta el & para asignar las variables de age, email y phone_number en el Scanf
gracias GOLLUM, no me habia dado cuenta de ese pequeño error
Mi aporte
package main
import"fmt"func main(){ fmt.Println("Calculadora de Operaciones Basicas") suma, resta, mulp,div:=operations(getNum(),getNum()) fmt.Println("El resultado de las operaciones son:") fmt.Printf("Suma: %d\n", suma) fmt.Printf("Resta: %d\n", resta) fmt.Printf("Multiplicación: %d\n", mulp) fmt.Printf("División: %.2f\n", div)}func getNum() int {var num int
num =1 fmt.Print("Ingresa un numero: ") fmt.Scanf("%d",&num)return num
}func operations(num1 int, num2 int)(int, int, int, float32){return(num1 + num2),(num1 - num2),(num1 * num2),(float32(num1)/float32(num2))}
package main
import"fmt"func main(){var( number1 int32
number2 int32
suma int32
resta int32
) fmt.Println("CALCULADORA") fmt.Print("Ingrese el primer numero: ") fmt.Scanf("%d",&number1) fmt.Print("Ingrese el segundo numero: ") fmt.Scanf("%d",&number2) suma, resta =calcular(number1, number2) fmt.Println("RESULTADO") fmt.Printf("Suma: %d\nResta: ", suma, resta)}func calcular(a int32, b int32)(int32, int32){return(a + b),(a - b)}
Lo hice en el mismo programa que hicimos aquí. Me apoye en el que hizo @ivanguerra10
package main
import"fmt"const helloWorld ="Hola %s %s. \nBienvenido al maravilloso mundo de GO."func main(){name:=getName()lastname:=getLastname() a, b,c:=getVariables()number:=sum(50,50)var( num1 int32
num2 int32
) fmt.Printf(helloWorld, name, lastname) fmt.Print(c, b, a, number) fmt.Println("Iniciando Calculadora\n.\n..\n...\nListo") fmt.Println("Ingresa primer numero") fmt.Scanf("%d",&num1) fmt.Println("Ingresa segundo numero") fmt.Scanf("%d",&num2) suma, resta, multi,divis:=calcular(num1, num2) fmt.Println("El resultado es: ") fmt.Printf("Suma: %d\nResta: %d\nMultiplicación: %d\nDivisión: %f", suma, resta, multi, divis)}func calcular(x int32, y int32)(int32, int32, int32, float32){return(x + y),(x - y),(x * y),(float32(x)/float32(y))}func getName() string {var name string
name ="Sin nombre" fmt.Print("Ingresa tu Nombre: ") fmt.Scanf("%s",&name)return name
}func getLastname() string {var lastname string
lastname ="Sin nombre" fmt.Print("Ingresa tu apellido: ") fmt.Scanf("%s",&lastname)return lastname
}func getVariables()(int, int, int){return1,2,3}func sum(a int, b int) int {return a + b
}
Mi solución de la calculadora.
package main
import"fmt"func main(){var num1, num2 float32
var op int
fmt.Printf("Ingrese el primer numero \n") fmt.Scanf("%f",&num1) fmt.Printf("Ingrese su segundo numero \n") fmt.Scanf("%f",&num2) fmt.Printf("Que operacion desea realizar. 1-suma, 2-resta, 3-multiplica, 4-divi \n") fmt.Scanf("%d",&op) result,typeOp:=validate(op, num1, num2) fmt.Printf("El resultado de la %v es: %.2f \n", typeOp, result)}func validate(op int, num1 float32, num2 float32)(float32, string){switch op {case1:returnsum(num1, num2)case2:returnrest(num1,num2)case3:returnmulti(num1, num2)case4:returndivi(num1,num2)default:returnsum(num1, num2)// tiene que retornar algo si no se cumple alguna opcion}}func sum(num1 float32, num2 float32)(float32, string){return(num1 + num2 ),"suma"}func rest(num1 float32, num2 float32)(float32, string){return(num1 - num2),("resta")}func multi(num1 float32, num2 float32)(float32, string){return(num1 * num2),"multiplicacion"}func divi(num1 float32, num2 float32)(float32, string){return(num1 / num2),"division"}