Gauntlet Documentation
  • 🏠Welcome
  • πŸ…Getting Started
    • 🧠Introduction To Gauntlet
  • ‼️Read before Proceeding
  • ⬇️Installation
  • πŸ‘¨β€πŸ’»VSCode Extension
  • πŸ“šBasics
    • πŸ’¨Running Gauntlet
    • πŸ“„File Setup & Hello World
  • πŸ” Scope Variables
  • πŸ–ΌοΈConstants
  • 🧩Functions
  • ↔️If Statements
  • πŸ”‘Ternary Operator
  • πŸ’ Switch-Case
  • πŸ“©Select-Case
  • ➰Loops
  • πŸ“Structs
  • 🧱Interfaces
  • πŸͺͺAliases
  • πŸ“ŽMethods
  • πŸ¦™Lambdas
  • πŸ•ΈοΈMiscellaneous
  • ⚑Advanced Features
    • πŸ”€When-Cases
    • 🚰Pipes
    • ⁉️Try-Statements
    • 🎭Force-Statements
    • 🌯Wrapper Types
Powered by GitBook
On this page
  • Select-Case Syntax
  • Working Example
Export as PDF

Select-Case

Select-Case Syntax

select {
    case <expr> : {
        <case body>
    }
    // or, you can declare variable(s) 
    case let <varPattern> = <expr> : {
        <case body>
    }
    // default is optional
    default: {
        <case body>
    }
}

Working Example

package main

import "fmt" as fmt

fun Unit main() {
  let ch1 = make(chan String, 1)
  let ch2 = make(chan String, 1)

  ch1 <- "Hello from ch1"

  zero String msg
  zero Bool ok

  select {
    case let msg, ok = <-ch1: {
      if ok {
          fmt.Println("Case 1:", msg)
      } else {
          fmt.Println("ch1 closed")
      }
    }

    case <-ch2: {
      fmt.Println("Case 2: received from ch2")
    }
    default: {
      fmt.Println("Default case: nothing ready")
    }
      
  }

}
package main

import fmt "fmt"

func main() {
	ch1 := make(chan string, 1)
	ch2 := make(chan string, 1)
	ch1 <- "Hello from ch1"
	var msg string
	var ok bool
	select {
	case msg, ok := <-ch1:
		{
			if ok {
				fmt.Println("Case 1:", msg)
			} else {
				fmt.Println("ch1 closed")
			}
			// Eliminates any 'unused variable' errors
			_, _ = msg, ok
		}
	case <-ch2:
		{
			fmt.Println("Case 2: received from ch2")
		}
	default:
		{
			fmt.Println("Default case: nothing ready")
		}
	}
	// Eliminates any 'unused variable' errors
	_, _, _, _ = ch1, ch2, msg, ok

}
Case 1: Hello from ch1
PreviousSwitch-CaseNextLoops

Last updated 7 days ago

πŸ“©