Go Academy · Pelajaran

Iterasi dan Pengurutan

Tangani urutan map yang acak

Pelajaran 4 dari 413 langkah

Iterasi dan Pengurutan adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Mengiterasi Peta

Gunakan range untuk melakukan perulangan pada peta dan mendapatkan setiap kunci serta nilainya.

package main

import "fmt"

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

Urutan Bersifat Acak

Urutan iterasi peta tidak dijamin. Go sengaja mengacaknya. Menjalankan perulangan yang sama dua kali dapat mencetak kunci dalam urutan yang berbeda.

Mengapa Diacak

Go sengaja mengacak urutan agar pengembang tidak tanpa sengaja bergantung pada urutan tertentu. Kode yang bergantung pada urutan peta adalah masalah yang menunggu untuk terjadi.

Hanya Kunci

Abaikan nilai untuk mengiterasi hanya kunci.

package main

import "fmt"

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

Mengumpulkan Kunci

Untuk mendapatkan hasil yang stabil, kumpulkan kunci ke dalam slice terlebih dahulu.

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")
}

Urutkan Kunci

Urutkan kunci yang telah dikumpulkan, lalu iterasikan slice tersebut. Dengan cara ini, keluaran menjadi terurut dan deterministik.

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])
	}
}

Pola Keluaran Terurut

Pola kumpulkan-lalu-urutkan adalah cara standar untuk mencetak peta dalam urutan yang dapat diprediksi. Selalu urutkan kunci ketika urutan keluaran penting.

Mengurutkan Kunci Bilangan Bulat

Gagasan yang sama berlaku untuk kunci numerik dengan 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])
	}
}

Mengubah Selama Iterasi

Anda dapat menghapus kunci dengan aman selama perulangan range. Namun, menambahkan kunci selama iterasi memiliki perilaku yang tidak terdefinisi; entri baru mungkin muncul atau mungkin tidak.

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))
}

Mengurutkan Berdasarkan Nilai

Untuk mengurutkan berdasarkan nilai, bukan kunci, kumpulkan kunci lalu urutkan dengan perbandingan yang membaca nilai dari peta.

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])
	}
}

Jangan Pernah Bergantung pada Urutan

Hal utama yang perlu diingat: jangan pernah menganggap urutan iterasi peta sudah pasti. Jika urutan penting, ekstrak kunci ke dalam slice dan urutkan secara eksplisit.

Pemeriksaan Singkat

Anda perlu mencetak entri peta dalam urutan kunci alfabetis. Apa pendekatan yang benar?

Ringkasan

Iterasi dan pengurutan:

  • Urutan range pada peta sengaja dibuat acak
  • Kumpulkan kunci, urutkan, lalu iterasikan untuk mendapatkan keluaran deterministik
  • Menghapus selama range aman; menambahkan memiliki perilaku yang tidak terdefinisi
Gratis untuk memulai

Belajar Go dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Iterasi dan Pengurutan” gratis?

Ya — teks lengkap “Iterasi dan Pengurutan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Iterasi dan Pengurutan”?

Tangani urutan map yang acak Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Iterasi dan Pengurutan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Bagian Dalam Map
  2. Memeriksa Keberadaan
  3. Map sebagai Set
  4. Iterasi dan Pengurutan
← Kembali ke Go Academy