Latest web development tutorials

ไปภาษาคำสั่งเลือก

ไปงบเงื่อนไขภาษา ไปงบเงื่อนไขภาษา

เลือกไปเป็นโครงสร้างการควบคุมในคำสั่งที่คล้ายกันสำหรับสวิทช์ในการสื่อสาร แต่ละกรณีจะต้องมีการดำเนินการสื่อสารทั้งการส่งหรือรับ

เลือกการดำเนินการกรณีการสุ่มสามารถเรียกใช้ หากมีกรณีที่จะเรียกใช้ไม่มีก็จะถูกบล็อกจนกว่าคดีจะสามารถทำงานได้ ประโยคเริ่มต้นควรจะทำงาน

ไวยากรณ์

ไปเขียนโปรแกรมไวยากรณ์ภาษาคำสั่งเลือกจะเป็นดังนี้:

select {
    case communication clause  :
       statement(s);      
    case communication clause  :
       statement(s); 
    /* 你可以定义任意数量的 case */
    default : /* 可选 */
       statement(s);
}

ต่อไปนี้จะอธิบายถึงไวยากรณ์ของคำสั่งที่เลือก:

  • แต่ละกรณีจะต้องมีการสื่อสาร
  • การแสดงออกของช่องทั้งหมดจะได้รับการประเมิน
  • การแสดงออกทั้งหมดจะถูกส่งไปได้รับการประเมิน
  • ถ้ามีการสื่อสารอาจจะใด ๆ ที่จะดำเนินการคนอื่น ๆ จะถูกละเลย
  • หากกรณีที่มากกว่าหนึ่งสามารถทำงานเลือกจะสุ่มเลือกการดำเนินการที่เป็นธรรม อื่น ๆ ไม่ได้รับการดำเนินการ
    มิฉะนั้น:
    1. หากมีข้อเริ่มต้นคำสั่งจะถูกดำเนินการ
    2. หากมีข้อเริ่มต้นไม่เลือกบล็อกจนถึงการสื่อสารอาจทำงาน; ไปที่ช่องหรือไม่คุ้มค่าการประเมินอีกครั้ง

ตัวอย่าง

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

ไปงบเงื่อนไขภาษา ไปงบเงื่อนไขภาษา