πŸ“©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")
    }
      
  }

}

Last updated