กรณีที่ควรทราบเมื่อใช้คำสั่งเลือกใน 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..!
Sign up and earn $1000 a day ⋙

Leave a Comment

วิธีการใช้ค่าคงที่ใน Golang

วิธีการใช้ค่าคงที่ใน Golang

ค่าคงที่หรือ Const ใน Golang คืออะไร? นี่คือสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับการใช้ค่าคงที่ใน Go

ฟังก์ชั่นระเหยใน Golang

ฟังก์ชั่นระเหยใน Golang

ฟังก์ชัน Variadic ใน Go ช่วยให้คุณสามารถส่งอาร์กิวเมนต์จำนวนไม่แน่นอนไปยังฟังก์ชันได้ นี่คือทุกสิ่งที่คุณจำเป็นต้องทราบเกี่ยวกับฟังก์ชันผันผวนใน Golang

พารามิเตอร์การส่งคืนที่มีชื่อใน Golang

พารามิเตอร์การส่งคืนที่มีชื่อใน Golang

ใน Golang พารามิเตอร์การส่งคืนที่มีชื่อมักเรียกว่าพารามิเตอร์ที่มีชื่อ Golang อนุญาตให้ตั้งชื่อพารามิเตอร์ที่ส่งกลับหรือผลลัพธ์ของฟังก์ชันในลายเซ็นหรือคำจำกัดความของฟังก์ชัน

คีย์เวิร์ดใน Go

คีย์เวิร์ดใน Go

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

ประเภทข้อมูลใน Golang

ประเภทข้อมูลใน Golang

ประเภทข้อมูลระบุประเภทข้อมูลที่ตัวแปร Go ที่ถูกต้องสามารถมีได้ ในภาษา Go ประเภทจะถูกแบ่งออกเป็นสี่ประเภทดังต่อไปนี้:

อาร์กิวเมนต์ฟังก์ชันใน Golang

อาร์กิวเมนต์ฟังก์ชันใน Golang

Go รองรับสองวิธีหลักในการส่งอาร์กิวเมนต์: ส่งตามค่าและส่งตามการอ้างอิง Go จะใช้ค่า pass by ตามค่าเริ่มต้น

ฟังก์ชันส่งคืนค่าหลายค่าใน Golang

ฟังก์ชันส่งคืนค่าหลายค่าใน Golang

ในภาษา Go คุณได้รับอนุญาตให้ส่งคืนค่าหลายค่าจากฟังก์ชันโดยใช้คำสั่ง return กล่าวอีกนัยหนึ่ง ในฟังก์ชัน คำสั่ง return สามารถส่งคืนค่าได้หลายค่า

คำสั่ง Switch ใน Go

คำสั่ง Switch ใน Go

Golang เช่นเดียวกับภาษาการเขียนโปรแกรมอื่นๆ ส่วนใหญ่ก็มีคำสั่ง switch วิธีใช้คำสั่ง switch ใน Golang มีดังนี้

โครงสร้างและฟิลด์ที่ไม่ระบุชื่อในโกลัง

โครงสร้างและฟิลด์ที่ไม่ระบุชื่อในโกลัง

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

วิธีใช้ตัวดำเนินการใน Golang

วิธีใช้ตัวดำเนินการใน Golang

ตัวดำเนินการช่วยให้เราสามารถดำเนินการประเภทต่างๆ กับตัวดำเนินการได้ ในภาษา Go ตัวดำเนินการสามารถจำแนกประเภทได้ตามฟังก์ชันที่แตกต่างกัน

ตัวระบุช่องว่างใน Golang

ตัวระบุช่องว่างใน Golang

_(ขีดล่าง) ใน Golang เรียกว่า Blank Identifier ตัวระบุคือชื่อที่ผู้ใช้กำหนดสำหรับส่วนประกอบของโปรแกรมซึ่งใช้เพื่อวัตถุประสงค์ในการระบุตัวตน

วิธีการสร้างโปรแกรมพื้นฐานใน Golang

วิธีการสร้างโปรแกรมพื้นฐานใน Golang

สวัสดีโลก! เป็นโปรแกรมพื้นฐานแรกในภาษาการเขียนโปรแกรมใด ๆ คุณสามารถเขียนโปรแกรมแรกนี้ใน Golang ได้โดยทำตามขั้นตอนด้านล่างนี้

วิธีการติดตั้ง Go บน Windows

วิธีการติดตั้ง Go บน Windows

Golang สามารถติดตั้งบน Windows ได้อย่างง่ายดาย ด้านล่างนี้เป็นคำแนะนำทีละขั้นตอนโดยละเอียดในการติดตั้ง Golang บน Windows

วิธีการที่มีชื่อเดียวกันใน Golang

วิธีการที่มีชื่อเดียวกันใน Golang

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

แล็ปท็อปที่ดีที่สุดสำหรับนักเรียนในปี 2025

แล็ปท็อปที่ดีที่สุดสำหรับนักเรียนในปี 2025

นักศึกษาจำเป็นต้องมีแล็ปท็อปเฉพาะทางสำหรับการเรียน ไม่เพียงแต่จะต้องมีพลังเพียงพอที่จะทำงานได้ดีในสาขาวิชาที่เลือกเท่านั้น แต่ยังต้องมีขนาดกะทัดรัดและน้ำหนักเบาพอที่จะพกพาไปได้ตลอดวัน

วิธีเพิ่มเครื่องพิมพ์ลงใน Windows 10

วิธีเพิ่มเครื่องพิมพ์ลงใน Windows 10

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

วิธีตรวจสอบ RAM และตรวจสอบข้อผิดพลาด RAM บนคอมพิวเตอร์ของคุณด้วยอัตราความแม่นยำสูงสุด

วิธีตรวจสอบ RAM และตรวจสอบข้อผิดพลาด RAM บนคอมพิวเตอร์ของคุณด้วยอัตราความแม่นยำสูงสุด

อย่างที่ทราบกันดีว่า RAM เป็นส่วนประกอบฮาร์ดแวร์ที่สำคัญมากในคอมพิวเตอร์ ทำหน้าที่เป็นหน่วยความจำในการประมวลผลข้อมูล และเป็นปัจจัยที่กำหนดความเร็วของแล็ปท็อปหรือพีซี ในบทความด้านล่างนี้ WebTech360 จะแนะนำวิธีการตรวจสอบข้อผิดพลาดของ RAM โดยใช้ซอฟต์แวร์บน Windows

ความแตกต่างระหว่างทีวีธรรมดากับสมาร์ททีวี

ความแตกต่างระหว่างทีวีธรรมดากับสมาร์ททีวี

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

ทำไมช่องแช่แข็งไม่มีแสง แต่ตู้เย็นมี?

ทำไมช่องแช่แข็งไม่มีแสง แต่ตู้เย็นมี?

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

2 วิธีในการแก้ไขความแออัดของเครือข่ายที่ทำให้ Wi-Fi ช้าลง

2 วิธีในการแก้ไขความแออัดของเครือข่ายที่ทำให้ Wi-Fi ช้าลง

เครือข่าย Wi-Fi ได้รับผลกระทบจากปัจจัยหลายประการนอกเหนือจากเราเตอร์ แบนด์วิดท์ และสัญญาณรบกวน แต่ยังมีวิธีชาญฉลาดบางอย่างในการเพิ่มประสิทธิภาพเครือข่ายของคุณ

วิธีดาวน์เกรดจาก iOS 17 เป็น iOS 16 โดยไม่สูญเสียข้อมูลโดยใช้ Tenorshare Reiboot

วิธีดาวน์เกรดจาก iOS 17 เป็น iOS 16 โดยไม่สูญเสียข้อมูลโดยใช้ Tenorshare Reiboot

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

เมื่อกินโยเกิร์ตเป็นประจำทุกวัน จะเกิดอะไรขึ้นกับร่างกาย?

เมื่อกินโยเกิร์ตเป็นประจำทุกวัน จะเกิดอะไรขึ้นกับร่างกาย?

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

ข้าวประเภทไหนดีต่อสุขภาพมากที่สุด?

ข้าวประเภทไหนดีต่อสุขภาพมากที่สุด?

บทความนี้จะกล่าวถึงประเภทของข้าวที่มีคุณค่าทางโภชนาการสูงสุดและวิธีเพิ่มประโยชน์ด้านสุขภาพจากข้าวที่คุณเลือก

วิธีตื่นนอนให้ตรงเวลาในตอนเช้า

วิธีตื่นนอนให้ตรงเวลาในตอนเช้า

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

เคล็ดลับสำหรับการเล่น Rent Please! การจำลองผู้ให้เช่าบ้านสำหรับมือใหม่

เคล็ดลับสำหรับการเล่น Rent Please! การจำลองผู้ให้เช่าบ้านสำหรับมือใหม่

ขอเช่าหน่อยคะ! Landlord Sim เป็นเกมจำลองมือถือบน iOS และ Android คุณจะเล่นเป็นเจ้าของอพาร์ทเมนท์และเริ่มให้เช่าอพาร์ทเมนท์โดยมีเป้าหมายในการอัพเกรดภายในอพาร์ทเมนท์ของคุณและเตรียมพร้อมสำหรับผู้เช่า

รหัสป้องกันหอคอยในห้องน้ำล่าสุดและวิธีการป้อนรหัส

รหัสป้องกันหอคอยในห้องน้ำล่าสุดและวิธีการป้อนรหัส

รับรหัสเกม Bathroom Tower Defense Roblox และแลกรับรางวัลสุดน่าตื่นเต้น พวกเขาจะช่วยคุณอัพเกรดหรือปลดล็อคหอคอยที่สร้างความเสียหายได้มากขึ้น

โครงสร้าง สัญลักษณ์ และหลักการทำงานของหม้อแปลงไฟฟ้า

โครงสร้าง สัญลักษณ์ และหลักการทำงานของหม้อแปลงไฟฟ้า

มาเรียนรู้เรื่องโครงสร้าง สัญลักษณ์ และหลักการทำงานของหม้อแปลงแบบแม่นยำที่สุดกันดีกว่า

4 วิธีที่ AI ช่วยทำให้สมาร์ททีวีดีขึ้น

4 วิธีที่ AI ช่วยทำให้สมาร์ททีวีดีขึ้น

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

เหตุใด ChatGPT จึงดีกว่า DeepSeek

เหตุใด ChatGPT จึงดีกว่า DeepSeek

ในตอนแรกผู้คนมีความหวังสูงกับ DeepSeek ในฐานะแชทบอท AI ที่ทำการตลาดในฐานะคู่แข่งที่แข็งแกร่งของ ChatGPT จึงรับประกันถึงความสามารถและประสบการณ์การแชทอันชาญฉลาด