
Channels
Channels, buffered กับ unbuffered, close, select, range บน channels, nil channels
1channel ใน Go คืออะไร?
channel ใน Go คืออะไร?
คำตอบ
channel คือชนิดข้อมูลที่ช่วยให้เกิดการสื่อสารและการซิงโครไนซ์ระหว่าง goroutine มันทำหน้าที่เป็นท่อส่งที่มีชนิดข้อมูลกำกับ ช่วยให้ส่งและรับค่าได้อย่าง thread-safe ใช้ channel เพื่อแบ่งปันข้อมูลระหว่าง goroutine แทนการแบ่งปันหน่วยความจำโดยตรง
2จะสร้าง unbuffered channel ของจำนวนเต็มใน Go ได้อย่างไร?
จะสร้าง unbuffered channel ของจำนวนเต็มใน Go ได้อย่างไร?
คำตอบ
unbuffered channel ถูกสร้างด้วย make(chan T) โดยไม่ระบุความจุ มันจะบล็อกผู้ส่งจนกว่าผู้รับจะพร้อม รับประกันการซิงโครไนซ์ที่เข้มงวด ใช้ unbuffered channel สำหรับการสื่อสารแบบ one-to-one ที่ต้องการการซิงโครไนซ์อย่างชัดเจน
3ความแตกต่างหลักระหว่าง buffered กับ unbuffered channel คืออะไร?
ความแตกต่างหลักระหว่าง buffered กับ unbuffered channel คืออะไร?
คำตอบ
unbuffered channel จะบล็อกผู้ส่งจนกว่าผู้รับจะพร้อม (การซิงโครไนซ์ที่เข้มงวด) ในขณะที่ buffered channel สามารถเก็บค่าได้จนถึงความจุก่อนที่จะบล็อก buffered channel ช่วยลดการพึ่งพากันระหว่าง goroutine และเพิ่มประสิทธิภาพในบางกรณี แต่อาจซ่อนปัญหาด้าน concurrency ได้ ใช้ unbuffered สำหรับการซิงโครไนซ์ และ buffered สำหรับ throughput
จะสร้าง buffered channel ที่มีความจุ 10 ตัวได้อย่างไร?
จะส่งค่าเข้าไปใน channel ได้อย่างไร?
+19 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Go อื่นๆ
พื้นฐาน Go
โครงสร้างข้อมูล Go
อินเทอร์เฟซใน Go
การจัดการข้อผิดพลาด
พื้นฐาน Goroutine
Go Modules
เซิร์ฟเวอร์ HTTP
ไคลเอนต์ HTTP
การเข้ารหัส JSON
Database/SQL
แพ็กเกจ context
Testing
รูปแบบ Concurrency
ไพรมิทีฟการซิงโครไนซ์
เฟรมเวิร์กเว็บ Go
การออกแบบ REST API
gRPC
Reflection
การจัดการหน่วยความจำ
การเพิ่มประสิทธิภาพการทำงาน
Generics
Go Design Patterns
Microservices
ความปลอดภัยและการยืนยันตัวตน
Docker & Containerization
Kubernetes Basics
Go ขั้นสูง
การพัฒนา CLI
เชี่ยวชาญ Go สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี