จะใช้ Select Statement ใน Golang ได้อย่างไร?

Ca Chi Select Statement Ni Golang Di Xyangri



เลือกคำสั่ง ใน Golang ช่วยให้นักพัฒนาสามารถซิงโครไนซ์และสื่อสารระหว่างกิจวัตร Go ช่องทาง และสตรีมข้อมูล ช่วยให้โปรแกรม Go สามารถรอการดำเนินการหลายช่องพร้อมกันและดำเนินการการดำเนินการแรกที่พร้อม

ในบทความนี้ เราจะมาศึกษาวิธีการใช้ เลือกคำสั่ง ใน Golang และให้ตัวอย่างเพื่อช่วยให้คุณบรรลุความเท่าเทียม การทำงานพร้อมกัน และการซิงโครไนซ์ในโปรแกรม Go

จะใช้ Select Statement ใน Golang ได้อย่างไร?

คล้ายกับคำสั่ง switch คือ เลือกคำสั่ง อนุญาตให้เราเลือกและดำเนินการหนึ่งนิพจน์จากหลายๆ นิพจน์ แต่ความแตกต่างหลักระหว่าง เลือก และสวิตซ์ก็คือว่า เลือกคำสั่ง ฟังก์ชั่นบนหลักการรอซึ่งหมายความว่า เลือกคำสั่ง จะไม่ดำเนินการจนกว่าการสื่อสารจะเสร็จสมบูรณ์







ในที่นี้ การสื่อสารหมายถึงการส่งและรับข้อมูลผ่านช่องทางที่กำหนด เมื่อการสื่อสารเสร็จสิ้น จะมีการตรวจสอบครั้งต่อไป ทำให้เราเห็นว่าข้อความเลือกของภาษา Go นั้นขึ้นอยู่กับช่องสัญญาณทั้งหมด



ไวยากรณ์สำหรับคำสั่ง Select

ไวยากรณ์อย่างง่ายที่ใช้สำหรับ เลือกคำสั่ง การใช้ภาษา Go แสดงอยู่ด้านล่าง:



เลือก {
กรณี ช่อง_1 :
// รหัสที่จะดำเนินการเมื่อ channel_1 พร้อม
กรณี ช่อง_2 :
// รหัสที่จะดำเนินการเมื่อ channel_2 พร้อม
กรณี ช่อง_3 :
// รหัสที่จะดำเนินการเมื่อ channel_3 พร้อม
กรณี ช่อง_4 :
// รหัสที่จะดำเนินการเมื่อ channel_4 พร้อม
ค่าเริ่มต้น :
// รหัสที่จะดำเนินการหากไม่มีช่องทางใดพร้อม
}

ที่นี่:





  • ภายใน เลือกคำสั่ง แต่ละกรณีแสดงถึงการดำเนินการช่องสัญญาณ ซึ่งสามารถเป็นการดำเนินการรับหรือการส่ง
  • เดอะ เลือกคำสั่ง รอจนกว่ากรณีใดกรณีหนึ่งจะพร้อม จากนั้นเรียกใช้และคำสั่งกรณีที่เกี่ยวข้อง
  • มันสุ่มเลือกช่องในกรณีที่มีหลายช่องพร้อมที่จะดำเนินการ

วิธีสร้างช่องใน Golang

หากต้องการสร้างช่องใน Go ผู้ใช้สามารถใช้ฟังก์ชัน make ตามด้วย ชาน คำหลักและระบุประเภทช่องซึ่งอาจเป็น int, string หรืออื่นๆ

:= ทำ ( ประเภทจัง )

ใช้ Select Statement ใน Golang

ที่นี่ เราจะแสดงตัวอย่างต่างๆ เพื่อช่วยให้คุณเรียนรู้พื้นฐานการใช้ เลือกคำสั่ง ในโกลัง.



ตัวอย่างที่ 1

ตัวอย่างต่อไปนี้ของ เลือกคำสั่ง สาธิตวิธีการทำงานเมื่อทั้งสองช่องพร้อมที่จะดำเนินการ

แพคเกจหลัก

นำเข้า 'เอฟเอ็มที'

ฟังก์ชั่นหลัก ( ) {

ในหนึ่ง := ทำ ( ชาน นานาชาติ )

สตริง := ทำ ( สตริงจัง )

ไป chan_num ( ในหนึ่ง )

ไป chan_str ( สตริง )

เลือก {

กรณี Ch1 := <- ในหนึ่ง :

เอฟเอ็มที พิมพ์ ( 'ข้อมูลช่อง:' , Ch1 )

กรณี Ch2 := <- สตริง :

เอฟเอ็มที พิมพ์ ( 'ข้อมูลช่อง:' , Ch2 )

}

}

ฟังก์ชั่น chan_num ( หนูจัง นานาชาติ ) {

ในหนึ่ง <- 67

}

ฟังก์ชั่น chan_str ( สตริง str ชาน ) {

สตริง <- 'ลีนุกซ์'

}

ในตัวอย่างข้างต้น เราสร้างสองช่อง ในหนึ่ง และ สตริง และเราใช้ฟังก์ชัน Go chan_num() เพื่อส่งข้อมูลไปยังช่อง num และ chan_str() เพื่อส่งข้อมูลไปยังช่อง str เนื่องจากโปรแกรมมีสองช่องทางที่แตกต่างกัน เราจึงใช้ เลือกคำสั่ง เพื่อดำเนินการอย่างใดอย่างหนึ่ง

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

ตัวอย่างที่ 2

หากคุณต้องการเพิ่มการหน่วงเวลาให้กับแชนเนลและส่งคืนเอาต์พุตของแชนเนลอื่น คุณสามารถใช้ เวลานอน () ทำงานในช่องที่กำหนด สิ่งนี้ทำให้คุณสามารถพิมพ์เอาต์พุตของช่องสัญญาณอื่นไปยังคอนโซลได้ นี่คือตัวอย่างของกรณีดังกล่าว

แพคเกจหลัก

นำเข้า (

'เอฟเอ็มที'

'เวลา'

)

ฟังก์ชั่นหลัก ( ) {

ในหนึ่ง := ทำ ( ชาน นานาชาติ )

สตริง := ทำ ( สตริงจัง )

ไป chan_num ( ในหนึ่ง )

ไป chan_str ( สตริง )

เลือก {

กรณี Ch1 := <- ในหนึ่ง :

เอฟเอ็มที พิมพ์ ( 'ข้อมูลช่อง:' , Ch1 )

กรณี Ch2 := <- สตริง :

เอฟเอ็มที พิมพ์ ( 'ข้อมูลช่อง:' , Ch2 )

}

}

ฟังก์ชั่น chan_num ( หนูจัง นานาชาติ ) {

ในหนึ่ง <- 67

}

ฟังก์ชั่น chan_str ( สตริง str ชาน ) {

เวลา . นอน ( 5 * เวลา . ที่สอง )

สตริง <- 'ลีนุกซ์'

}

ในรหัสที่กำหนดข้างต้น เราใช้ เวลานอน() ฟังก์ชั่นภายใน chan_str() การทำงาน. เฉพาะช่อง num เท่านั้นที่พร้อมสำหรับการดำเนินการใน 5 วินาทีแรก ส่งผลให้ เลือกคำสั่ง เรียกใช้กรณี Ch1 .

เอาต์พุต

บันทึก: คุณสามารถเพิ่มการหน่วงเวลาให้กับทั้งสองแชนเนลเพื่อชะลอการดำเนินการของแชนเนล

บทสรุป

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