กรณีที่ควรทราบเมื่อใช้คำสั่งเลือกใน Golang

ในภาษา Go คำสั่ง select จะเหมือนกับคำสั่ง switchแต่ในคำสั่ง select คำสั่ง case จะอ้างถึงการสื่อสาร กล่าวคือ การส่งหรือรับการดำเนินการบนช่องทาง

กรณีที่ควรทราบเมื่อใช้คำสั่งเลือกใน Golang

รูปแบบประโยค :

select{

case SendOrReceive1: // Lệnh
case SendOrReceive2: // Lệnh
case SendOrReceive3: // Lệnh
.......
default: // Lệnh

ในบทความนี้ เราจะเรียนรู้วิธีใช้เคสเริ่มต้นเพื่อหลีกเลี่ยงการหยุดชะงัก ก่อนอื่นเรามาดูก่อนว่า deadlock case เมื่อใช้คำสั่ง Golang select คืออะไร

สิ่งที่ควรรู้เกี่ยวกับกรณีเดดล็อคในโกลัง

เดดล็อก:เมื่อคุณพยายามอ่านหรือเขียนข้อมูลจากช่องสัญญาณ แต่ช่องสัญญาณกลับว่างเปล่า ดังนั้นจึงบล็อกการทำงานปัจจุบันของ goroutine และส่งการควบคุมไปยัง goroutine อื่นๆ แต่หากไม่มี goroutine อื่นๆ ให้ใช้งานหรือ goroutine อื่นๆ กำลังพักผ่อนเนื่องจากสถานการณ์นี้ โปรแกรมจะหยุดทำงาน ปรากฏการณ์นี้เรียกว่าภาวะเดดล็อค ดังแสดงในตัวอย่างด้านล่างนี้:

ตัวอย่างเช่น:

// Chương trình Go minh hoạc
// cách deadlock phát sinh
package main 

// Hàm chính
func main() { 

	// Tạo một kênh
	// Deadlock phát sinh bởi
	// không có goroutine đang viết
	// vào kênh này, vì thế
	// lệnh select đã bị khóa mãi mãi
	c := make(chan int) 
	select { 
	case <-c: }="" }="">

ผลลัพธ์:

fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan receive]:
main.main()

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

ตัวอย่างเช่น:

// Chương trình Go minh họa cách giải quyết
// vấn đề deadlock bằng case mặc định
package main 

import "fmt"

// Hàm chính
func main() { 

	// Tạo 1 kênh
	c := make(chan int) 
	select { 
	case <-c: default:="" fmt.println("!..="" default="" case..!")="" }="" }="">

ผลลัพธ์:

!.. Default case..!

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

ตัวอย่างเช่น:

// Chương trình Go minh họa
// chạy case mặc định
package main 

import "fmt"

// Hàm chính
func main() { 

	// Tạo một kênh
	var c chan int

	select { 
	case x1 := <-c: fmt.println("value:="" ",="" x1)="" default:="" fmt.println("default="" case..!")="" }="" }="">

ผลลัพธ์:

Default case..!

ฝากความเห็น

10 ไอเดียตกแต่งฮาโลวีนแบบ DIY จากกล่องกระดาษแข็งรีไซเคิล (ง่ายไปจนถึงขั้นสูง)

10 ไอเดียตกแต่งฮาโลวีนแบบ DIY จากกล่องกระดาษแข็งรีไซเคิล (ง่ายไปจนถึงขั้นสูง)

ประดิษฐ์ของตกแต่งฮาโลวีน 10 แบบจากกล่องกระดาษแข็งรีไซเคิล ตั้งแต่พวงมาลัยค้างคาวและฟักทอง ไปจนถึงบ้านผีสิง พร้อมขั้นตอนการทำและเคล็ดลับด้านความปลอดภัย

ชุดฮาโลวีนครูที่เด็กๆ จะจำได้ในปี 2026

ชุดฮาโลวีนครูที่เด็กๆ จะจำได้ในปี 2026

ค้นหาชุดฮาโลวีนสุดคุ้นเคยสำหรับคุณครูในปี 2026 ตั้งแต่ Bluey และ Dog Man ไปจนถึง Mario และ HUNTR/X พร้อมตัวเลือกตามช่วงอายุและเคล็ดลับความปลอดภัยในห้องเรียน

20 ชุดฮาโลวีนง่ายๆ สำหรับนักศึกษาที่คุณสามารถดัดแปลงจากของในตู้ได้

20 ชุดฮาโลวีนง่ายๆ สำหรับนักศึกษาที่คุณสามารถดัดแปลงจากของในตู้ได้

กำลังมองหาชุดฮาโลวีนสำหรับนักศึกษาแบบเร่งด่วนอยู่หรือเปล่า? ลองดู 20 ลุคที่ง่ายและประหยัดงบประมาณ ซึ่งสร้างจากเสื้อผ้าพื้นฐานในตู้ พร้อมเคล็ดลับการแต่งตัวและความปลอดภัยอย่างรวดเร็ว

สไตล์สยองขวัญจาก BookTok: หนังสือและของตกแต่งสำหรับวันฮาโลวีนที่ตอบโจทย์ความน่ากลัวทุกระดับ

สไตล์สยองขวัญจาก BookTok: หนังสือและของตกแต่งสำหรับวันฮาโลวีนที่ตอบโจทย์ความน่ากลัวทุกระดับ

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

วิธีจัดงานปาร์ตี้ฮาโลวีนเสมือนจริงสำหรับทีมที่ทำงานทางไกล

วิธีจัดงานปาร์ตี้ฮาโลวีนเสมือนจริงสำหรับทีมที่ทำงานทางไกล

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

น่ากลัวแต่ก็แสนน่ารัก: ไอเดียจัดงานปาร์ตี้ฮาโลวีนสำหรับโรงเรียนประถม

น่ากลัวแต่ก็แสนน่ารัก: ไอเดียจัดงานปาร์ตี้ฮาโลวีนสำหรับโรงเรียนประถม

วางแผนจัดงานปาร์ตี้ฮาโลวีนสนุกๆ สำหรับเด็กประถม ด้วยงานประดิษฐ์ง่ายๆ เกม ขนมสำหรับทุกคน เคล็ดลับการแต่งกาย และตัวอย่างตารางเรียนในห้องเรียน 75 นาที

ไอเดียตกแต่งโต๊ะทำงานสำหรับห้องทำงานสไตล์หลอนๆ

ไอเดียตกแต่งโต๊ะทำงานสำหรับห้องทำงานสไตล์หลอนๆ

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

ไอเดียชุดแฟนซีจากวัฒนธรรมป๊อปที่จะมาแรงในวันฮาโลวีนปี 2026

ไอเดียชุดแฟนซีจากวัฒนธรรมป๊อปที่จะมาแรงในวันฮาโลวีนปี 2026

วางแผนลุคฮาโลวีนปี 2026 ที่น่าจดจำด้วยชุดคอสตูมจากวัฒนธรรมป๊อปที่ได้รับแรงบันดาลใจจากสไปเดอร์แมน ซูเปอร์เกิร์ล ทอยสตอรี่ 5 โมอาน่า มาริโอ และเวนส์เดย์

ลูกอมและฟักทองที่เหลือจากวันฮาโลวีน: ควรทำอะไรต่อดี

ลูกอมและฟักทองที่เหลือจากวันฮาโลวีน: ควรทำอะไรต่อดี

คัดแยกขนมฮาโลวีนที่เหลืออย่างปลอดภัย แบ่งปันหรือนำขนมที่บรรจุในภาชนะปิดสนิทไปใช้ใหม่ และเลือกนำฟักทองไปใช้ประกอบอาหารหรือทำปุ๋ยหมักตามสภาพของฟักทอง

สิ่งที่ไม่ควรสวมใส่: คู่มือมารยาทในการทำงานในวันฮาโลวีน

สิ่งที่ไม่ควรสวมใส่: คู่มือมารยาทในการทำงานในวันฮาโลวีน

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