Go Academy · Pelajaran

Rune vs Byte

Pahami bagian dalam string Go

Pelajaran 1 dari 413 langkah

Rune vs Byte adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.

Apa Itu String Go?

Dalam Go, string adalah urutan bita yang tidak dapat diubah. Bita biasanya berisi teks berkode UTF-8, tetapi Go tidak pernah mewajibkan hal tersebut.

  • Anda tidak dapat mengubah string secara langsung.
  • len-nya menghitung bita, bukan karakter.
package main

import "fmt"

func main() {
    s := "Go"
    fmt.Println(s)
    fmt.Println(len(s))
}

Bita di Balik Layar

Mengindeks string dengan s[i] mengembalikan satu bita (bertipe byte, alias untuk uint8).

Untuk teks ASCII biasa, setiap karakter tepat berukuran satu bita.

package main

import "fmt"

func main() {
    s := "ABC"
    fmt.Println(s[0])
    fmt.Println(s[1])
    fmt.Println(s[2])
}

Bita adalah Angka

Karena bita hanyalah angka, mencetak s[0] menampilkan 65 (kode ASCII untuk A), bukan hurufnya.

Untuk melihat karakternya, konversikan bita tersebut kembali menjadi string.

package main

import "fmt"

func main() {
    s := "ABC"
    fmt.Println(string(s[0]))
}

Apa Itu rune?

rune adalah alias untuk int32 dan mewakili satu titik kode Unicode.

  • Satu rune dapat mencakup beberapa bita saat dikodekan sebagai UTF-8.
  • Gunakan rune saat Anda memperhatikan karakter, bukan bita mentah.
package main

import "fmt"

func main() {
    var r rune = 'A'
    fmt.Println(r)
    fmt.Println(string(r))
}

Karakter Multibita

Karakter non-ASCII membutuhkan lebih dari satu bita dalam UTF-8. String seperti "héllo" memiliki lebih banyak bita daripada jumlah hurufnya.

Perhatikan bahwa len melaporkan jumlah bita, yang lebih besar daripada panjang yang terlihat.

package main

import "fmt"

func main() {
    s := "héllo"
    fmt.Println(len(s))
}

Melakukan range pada String

Perulangan for range pada string secara otomatis mendekode UTF-8. Setiap iterasi menghasilkan:

  • indeks bita tempat rune dimulai,
  • rune itu sendiri.
package main

import "fmt"

func main() {
    for i, r := range "héllo" {
        fmt.Println(i, string(r))
    }
}

Menghitung Karakter dengan Benar

Untuk menghitung karakter, bukan bita, konversikan string menjadi []rune lalu ambil panjangnya.

Hasilnya adalah jumlah titik kode.

package main

import "fmt"

func main() {
    s := "héllo"
    runes := []rune(s)
    fmt.Println(len(runes))
}

Mengindeks berdasarkan Rune

Setelah memiliki []rune, Anda dapat mengindeksnya untuk memperoleh karakter ke-N dengan andal, bahkan pada teks multibita.

package main

import "fmt"

func main() {
    runes := []rune("héllo")
    fmt.Println(string(runes[1]))
}

String ke Bita dan Sebaliknya

Anda dapat mengonversi string dan []byte secara bebas.

  • []byte(s) menghasilkan bita mentah.
  • string(b) membangun kembali teks.
package main

import "fmt"

func main() {
    b := []byte("Go")
    fmt.Println(b)
    fmt.Println(string(b))
}

Membangun String dari Rune

Slice rune dapat dikonversikan kembali menjadi string dengan cara yang sama. Ini berguna setelah Anda mengedit karakter satu per satu.

package main

import "fmt"

func main() {
    runes := []rune{'G', 'o', '!'}
    fmt.Println(string(runes))
}

Ringkasan Bita vs Rune

Model mental singkat:

  • byte = satu bita mentah (uint8), len(s) menghitung bita ini.
  • rune = satu titik kode Unicode (int32), range menghasilkan titik kode ini.
  • Gunakan []rune saat menghitung atau mengindeks karakter.
package main

import "fmt"

func main() {
    s := "café"
    fmt.Println(len(s))
    fmt.Println(len([]rune(s)))
}

Pemeriksaan Cepat

Uji pemahaman Anda tentang rune dan bita.

Rangkuman: Rune vs Bita

Anda telah mempelajari bahwa string Go adalah urutan bita yang tidak dapat diubah, biasanya dalam UTF-8.

  • byte adalah bita mentah; len menghitung bita.
  • rune adalah titik kode Unicode; range mendekodekannya.
  • Lakukan konversi dengan []byte(s) dan []rune(s) untuk bekerja pada tingkat yang tepat.
package main

import "fmt"

func main() {
    s := "Go語"
    fmt.Println("bytes:", len(s))
    fmt.Println("runes:", len([]rune(s)))
}
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 “Rune vs Byte” gratis?

Ya — teks lengkap “Rune vs Byte” 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 “Rune vs Byte”?

Pahami bagian dalam string Go 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 1 dari 4.

Berapa lama pelajaran “Rune vs Byte” 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. Rune vs Byte
  2. Fungsi Paket strings
  3. strings.Builder
  4. Unicode dan utf8
← Kembali ke Go Academy