1 ภาพรวมของคำสั่งลูป
ใน Go language, คำสั่งลูปช่วยให้เราสามารถ execute บล็อกโค้ดได้หลายครั้ง เมื่อคุณต้องการทำซ้ำการดำเนินการบางอย่าง คำสั่งลูปกลายเป็นสิ่งสำคัญมาก ตัวอย่างเช่น คุณอาจต้องการวนซ้ำผ่านทุกๆ element ในอาร์เรย์ หรือทำซ้ำการดำเนินการจนกว่าเงื่อนไขบางอย่างจะถูกทำครบ ใน Go, คำสั่งลูปส่วนใหญ่ถูกนำมาใช้โดยใช้คีย์เวิร์ด for
ซึ่งเป็นเพียงคำสั่งลูปเดียวใน Go language การใช้คำสั่งลูปอย่างถูกต้องเป็นสิ่งสำคัญสำหรับเขียนโค้ดที่มีประสิทธิภาพและสามารถบำรุงรักษาได้
2 พื้นฐานของ for
ลูป
2.1 โครงสร้างของ for
ลูป
for
ลูปใน Go language ประกอบด้วยส่วนที่สามประการ:
- คำสั่งการเริ่มต้น: ที่ทำงานก่อนการวนซ้ำครั้งแรก, โดยทั่วไปใช้สำหรับการประกาศตัวนับของลูป
-
เงื่อนไขการเช็ค: ทำการประเมินก่อนทุกครั้งที่วนซ้ำ ถ้าเงื่อนไขเป็น
true
บล็อกโค้ดในลูปจะถูกทำงาน - คำสั่งหลังบล็อกโค้ด: ทำงานหลังจากที่บล็อกโค้ดของการวนซ้ำทุกครั้ง, โดยทั่วไปใช้สำหรับการอัพเดทตัวนับของลูป
รูปแบบของ for
ลูปมีดังนี้:
for คำสั่งการเริ่มต้น; เงื่อนไขการเช็ค; คำสั่งหลังบล็อกโค้ด {
// บล็อกโค้ดของการวนซ้ำ
}
2.2 ตัวอย่างง่ายของ for
ลูป
ในตัวอย่างนี้, ตัวแปร i
ถูกเริ่มต้นที่ 0
. for
ลูปเช็คว่าเงื่อนไข i < 5
เป็น true
หรือไม่ หากเงื่อนไขเป็นจริง, บล็อกโค้ดของลูปจะถูกทำงานและค่าของ i
ถูกปริ้นท์ออกมา หลังจากที่บล็อกโค้ดถูกทำงาน, ค่าของ i
ถูกอัพเดทโดย i++
(การเพิ่มค่า) และต่อมาลูปก็ทำการเช็คเงื่อนไขอีกครั้งจนกว่าค่าของ i
จะถึงที่ 5
, ณ เวลานั้นเงื่อนไขจะกลายเป็นเท็จและ for
ลูปจะสิ้นสุด
2.3 ตัวอย่างอื่น ๆ ของ for
ลูป
for
ลูปใน Go language เป็นอย่างยืดหยุ่นและสามารถเขียนได้ในรูปแบบต่าง ๆ เพื่อจัดการกับสถานการณ์ที่แตกต่างกัน
2.3.1 ลูปไม่มีที่สิ้นสุด
ใน Go, คุณสามารถละคำสั่งการเริ่มต้น, เงื่อนไขการเช็ค, และคำสั่งหลังบล็อกโค้ดของ for
ลูป, สร้างลูปที่ไม่มีที่สิ้นสุด ซึ่งจะวิ่งจนกว่าจะถูกหยุดโดยคำสั่ง break
หรือค่าที่ถูกส่งกลับมาจากฟังก์ชัน
for {
// โค้ดภายในลูปที่ไม่มีที่สิ้นสุด
if เงื่อนไขบางอย่าง {
break // ออกจากลูปเมื่อเงื่อนไขบางอย่างถูกทำครบ
}
}
2.3.2 ลูปที่มีเพียงเงื่อนไขเดียว
ใน Go, คุณยังสามารถใช้ for
ลูปที่มีเพียงเงื่อนไขเดียว, คล้ายกับ while
ลูปในภาษาโปรแกรมอื่น ๆ
n := 0
for n < 5 {
fmt.Println(n)
n++
}
โค้ดข้างต้นจะปริ้นท์ค่า 0
ถึง 4
, และลูปจะจบเมื่อ n
ถึงที่ 5
.
2.3.3 วนซ้ำผ่านอาร์เรย์หรือ slice
ใน Go, คำสั่งคีย์เวิร์ด range
ถูกใช้เพื่อการทำงานโดยช่วยให้สามารถวนซ้ำผ่านทุกๆ element ของอาร์เรย์หรือ slice
items := []int{1, 2, 3, 4, 5}
for index, value := range items {
fmt.Printf("Index: %d, Value: %d\n", index, value)
}
โค้ดข้างต้นจะปริ้นแสดงดัชนีและค่าของทุก element หากคุณมีความต้องการเพียงค่าของ element เท่านั้น, คุณสามารถใช้ _
เพื่อละทิ้งดัชนี
for _, value := range items {
fmt.Printf("Value: %d\n", value)
}
2.3.4 วนลูปผ่านแผนที่
เมื่อวนลูปผ่านแผนที่ การใช้ for
loop และ range
expression เป็นสิ่งที่มีประสิทธิภาพมาก นี้ช่วยให้คุณได้รับคู่ค่าที่สำคัญของแต่ละคีย์ในแผนที่
colors := map[string]string{"red": "#ff000", "green": "#00ff00", "blue": "#000ff"}
for key, value := range colors {
fmt.Printf("Key: %s, Value: %s\n", key, value)
}
ในตัวอย่างนี้เราพิมพ์คีย์ทั้งหมดและค่าที่เกี่ยวข้องในแผนที่ colors
ที่คล้ายกับการวนลูปผ่าน slice หากคุณต้องการเพียงแค่คีย์หรือค่าคุณสามารถเลือกที่จะไม่สนใจอีกฝ่ายหนึ่ง
หมายเหตุ: การใช้งานของแผนที่จะอธิบายอย่างละเอียดในบทต่อไป หากคุณไม่เข้าใจส่วนนี้ก็ไม่เป็นไร ที่สำคัญคือคุณเข้าใจว่า
for
loop สามารถใช้ได้ตามแบบนี้
3 ควบคุมการเคลื่อนไหวของลูป
3.1 ใช้ break
เพื่อจบลูป
บางครั้งเราต้องการที่จะออกจากลูปล่วงหน้าเมื่อเงื่อนไขที่ระบุได้ถูกตอบเป็นจริง และในกรณีเช่นนั้นคำสั่ง break
สามารถใช้ได้ ด้านล่างนี้เป็นตัวอย่างการใช้ break
เพื่อออกจากลูป:
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i == 5 {
break // ออกจากลูปเมื่อ i เท่ากับ 5
}
fmt.Println("ค่าของ i คือ:", i)
}
// ผลลัพธ์จะประกอบด้วยค่าจาก 0 ถึง 4 เท่านั้น
}
3.2 ใช้ continue
เพื่อข้ามการวนซ้ำ
ในบางสถานการณ์เราอาจต้องการข้ามการวนซ้ำปัจจุบันและดำเนินการต่อในการวนลูปถัดไป สามารถทำได้โดยใช้คำสั่ง continue
ต่อไปนี้คือตัวอย่าง:
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i%2 != 0 {
continue // ข้ามการวนซ้ำนี้หาก i เป็นเลขคี่
}
fmt.Println("เลขคู่:", i)
}
}