Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

173
Views
cómo usar una instrucción `switch` en Go
package main import "fmt" func main() { var age int fmt.Scanf("%d", &age) // Code your switch or if...else-if statement here. switch age { case 1: age <= 14 fmt.Println("Toy Story 4") case 2: age <= 18 fmt.Println("The Matrix") case 3: age <= 25 fmt.Println("John Wick") case 4: age <= 35 fmt.Println("Constantine") case 5: age > 35 fmt.Println("Speed") default: fmt.Println("Error: Unknown age") } }

Obtengo un marcador amarillo en el IDE para scanf , que indica un error no controlado. Además, todos los casos tienen la primera línea marcada en rojo, lo que impide compilar. El error que obtengo es age <= 14 is evaluated, but not used . Lo mismo es cierto para todas las declaraciones. Busqué en la web y miré ejemplos, y por lo que puedo ver, el código es, como lo indican los materiales y los ejemplos. Aquí hay una captura de pantalla de Go Land (JetBrains):

Alguien tiene una idea? Además, si responde, tenga en cuenta que esta es una lección de un curso de Go y tengo que usar scanf. Podría cambiar el interruptor a otro si, lo que probablemente solucionará el problema, pero tengo un poco de curiosidad acerca de por qué sucede esto y cómo puedo solucionarlo. :)

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

age <= 14 no es una expresión de Go válida, aunque podría usarse como parte de una. Go es muy particular acerca de todos los valores que se consumen.

Esta no es la forma correcta de escribir un case con operadores <= .

 switch age { case 1: age <= 14 fmt.Println("Toy Story 4") ... }

Ese caso coincide si el valor de la age es 1 . Desea utilizar un estilo de interruptor como este:

 switch { case age <= 14: fmt.Println("Toy Story 4") case age <= 18: ... ... }
over 4 years ago · Santiago Trujillo Report

0

Para agregar a lo que escribió Daniel, básicamente la declaración de cambio (a menos que sea un cambio de tipo pero no nos desviemos) tiene dos formas:

 switch { // note the absense of any expression here case bool_expr_1: ... case bool_expr_2: ...

y

 switch any_expr { case value_to_match_1: ... case value_to_match_2: ...

En la primera forma, las expresiones en cada rama de case se evalúan de arriba a abajo, y la primera que se evalúa como true , "gana", es decir, se ejecuta el código en esa rama.
En la segunda forma, la expresión se evalúa para producir un valor que luego se compara exactamente con el valor en cada rama de caso.

Ha intentado combinar ambas formas, lo que no funcionará.
Es posible que haya pensado que esos números en las ramas de casos son el orden en que se deben verificar las ramas, pero no, eso no es todo.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!