0Pricing
Go Academy · บทเรียน

การวนซ้ำและลำดับ

จัดการลำดับสุ่มของแมป

การวนซ้ำและลำดับ เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

การวนซ้ำบนแมป

ใช้ range เพื่อวนดูแมป โดยรับคีย์และค่าแต่ละรายการ

package main

import "fmt"

func main() {
	m := map[string]int{"a": 1, "b": 2}
	for k, v := range m {
		fmt.Println(k, v)
	}
}

ลำดับเป็นแบบสุ่ม

ลำดับการวนดูแมป ไม่ได้รับการรับประกัน Go จงใจทำให้ลำดับเป็นแบบสุ่ม การวนซ้ำเดียวกันสองครั้งอาจพิมพ์คีย์ออกมาในลำดับต่างกัน

เหตุใดจึงทำให้เป็นแบบสุ่ม

Go ทำให้ลำดับเป็นแบบสุ่มโดยตั้งใจ เพื่อไม่ให้นักพัฒนาพึ่งพาลำดับใดลำดับหนึ่งโดยไม่รู้ตัว โค้ดที่ขึ้นอยู่กับลำดับของแมปคือข้อผิดพลาดที่รอเกิดขึ้น

เฉพาะคีย์

ละเว้นค่าเพื่อวนดูเฉพาะคีย์

package main

import "fmt"

func main() {
	m := map[string]int{"a": 1, "b": 2, "c": 3}
	for k := range m {
		fmt.Println(k)
	}
}

การรวบรวมคีย์

หากต้องการผลลัพธ์ที่มีลำดับคงที่ ให้รวบรวมคีย์ลงในสไลซ์ก่อน

package main

import "fmt"

func main() {
	m := map[string]int{"a": 1, "b": 2, "c": 3}
	keys := []string{}
	for k := range m {
		keys = append(keys, k)
	}
	fmt.Println("collected", len(keys), "keys")
}

เรียงลำดับคีย์

เรียงลำดับคีย์ที่รวบรวมไว้ แล้วจึงวนดูสไลซ์ วิธีนี้ทำให้ได้ผลลัพธ์ที่มีลำดับแน่นอนและเป็นระเบียบ

package main

import (
	"fmt"
	"sort"
)

func main() {
	m := map[string]int{"c": 3, "a": 1, "b": 2}
	keys := []string{}
	for k := range m {
		keys = append(keys, k)
	}
	sort.Strings(keys)
	for _, k := range keys {
		fmt.Println(k, m[k])
	}
}

รูปแบบผลลัพธ์ตามลำดับ

รูปแบบรวบรวมแล้วเรียงลำดับเป็นวิธีมาตรฐานในการพิมพ์แมปให้มีลำดับที่คาดเดาได้ ให้เรียงลำดับคีย์เสมอเมื่อสิ่งสำคัญคือ ลำดับของผลลัพธ์

การเรียงลำดับคีย์จำนวนเต็ม

แนวคิดเดียวกันนี้ใช้กับคีย์ตัวเลขได้ด้วย sort.Ints

package main

import (
	"fmt"
	"sort"
)

func main() {
	m := map[int]string{3: "c", 1: "a", 2: "b"}
	keys := []int{}
	for k := range m {
		keys = append(keys, k)
	}
	sort.Ints(keys)
	for _, k := range keys {
		fmt.Println(k, m[k])
	}
}

การแก้ไขระหว่างการวนซ้ำ

คุณสามารถลบคีย์ระหว่างการวนซ้ำด้วย range ได้อย่างปลอดภัย แต่การเพิ่มคีย์ระหว่างการวนซ้ำมีพฤติกรรมที่ไม่ได้กำหนด รายการใหม่อาจปรากฏหรือไม่ปรากฏก็ได้

package main

import "fmt"

func main() {
	m := map[string]int{"a": 1, "b": 2, "c": 3}
	for k := range m {
		if k == "b" {
			delete(m, k)
		}
	}
	fmt.Println(len(m))
}

การเรียงลำดับตามค่า

หากต้องการเรียงตามค่าแทนคีย์ ให้รวบรวมคีย์ก่อน แล้วเรียงลำดับด้วยการเปรียบเทียบที่อ่านค่าจากแมป

package main

import (
	"fmt"
	"sort"
)

func main() {
	m := map[string]int{"a": 3, "b": 1, "c": 2}
	keys := []string{}
	for k := range m {
		keys = append(keys, k)
	}
	sort.Slice(keys, func(i, j int) bool {
		return m[keys[i]] < m[keys[j]]
	})
	for _, k := range keys {
		fmt.Println(k, m[k])
	}
}

อย่าพึ่งพาลำดับ

ประเด็นสำคัญคือ อย่าคิดว่าการวนดูแมปจะมีลำดับใดลำดับหนึ่ง หากลำดับมีความสำคัญ ให้ดึงคีย์ออกมาใส่สไลซ์แล้วเรียงลำดับอย่างชัดเจน

ตรวจสอบความเข้าใจอย่างรวดเร็ว

คุณต้องพิมพ์รายการของแมปโดยเรียงคีย์ตามลำดับตัวอักษร วิธีที่ถูกต้องคืออะไร

สรุป

การวนซ้ำและการจัดลำดับ:

  • ลำดับจากการใช้ range กับแมปเป็นแบบสุ่มโดยตั้งใจ
  • รวบรวมคีย์ เรียงลำดับคีย์ แล้วจึงวนดูเพื่อให้ได้ผลลัพธ์ที่แน่นอน
  • การลบระหว่างใช้ range ปลอดภัย แต่การเพิ่มมีพฤติกรรมที่ไม่ได้กำหนด

คำถามที่พบบ่อย

บทเรียน “การวนซ้ำและลำดับ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การวนซ้ำและลำดับ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การวนซ้ำและลำดับ”

จัดการลำดับสุ่มของแมป คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การวนซ้ำและลำดับ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม

ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. โครงสร้างภายในของแมป
  2. การตรวจสอบการมีอยู่
  3. แมปในรูปแบบเซต
  4. การวนซ้ำและลำดับ
← กลับไปที่ Go Academy