Go-select-statement

提供:Dev Guides
移動先:案内検索

Go-Selectステートメント

Goプログラミング言語の select ステートメントの構文は次のとおりです-

select {
   case communication clause  :
      statement(s);
   case communication clause  :
      statement(s);
  /*you can have any number of case statements*/
   default :/*Optional*/
      statement(s);
}

次のルールは、 select ステートメントに適用されます-

  • select内には、任意の数のcaseステートメントを含めることができます。 各ケースの後に、比較する値とコロンが続きます。
  • ケースの type は通信チャネル操作でなければなりません。
  • チャネル操作が発生すると、そのケースに続くステートメントが実行されます。 caseステートメントに break は必要ありません。
  • select ステートメントには、オプションの default ケースを含めることができます。これは、selectの最後に表示する必要があります。 デフォルトのケースは、どのケースにも当てはまらない場合にタスクを実行するために使用できます。 デフォルトの場合、 break は不要です。

package main

import "fmt"

func main() {
   var c1, c2, c3 chan int
   var i1, i2 int
   select {
      case i1 = <-c1:
         fmt.Printf("received ", i1, " from c1\n")
      case c2 <- i2:
         fmt.Printf("sent ", i2, " to c2\n")
      case i3, ok := (<-c3): //same as: i3, ok := <-c3
         if ok {
            fmt.Printf("received ", i3, " from c3\n")
         } else {
            fmt.Printf("c3 is closed\n")
         }
      default:
         fmt.Printf("no communication\n")
   }
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

no communication