Rumah > pembangunan bahagian belakang > Golang > Mengapa Pengindeksan Rentetan di dalam Sentiasa Mengembalikan Watak yang Dijangkakan?

Mengapa Pengindeksan Rentetan di dalam Sentiasa Mengembalikan Watak yang Dijangkakan?

Barbara Streisand
Lepaskan: 2024-12-14 16:18:14
asal
658 orang telah melayarinya

Why Doesn't String Indexing in Go Always Return the Expected Character?

Mengindeks Aksara dalam Rentetan Golang

Untuk mendapatkan semula aksara daripada rentetan, anda menggunakan operasi pengindeksan. Walau bagaimanapun, anda mungkin menghadapi kes di mana nilai yang diindeks tidak sepadan dengan aksara yang dijangkakan. Sebagai contoh, dalam kod di bawah:

package main

import "fmt"

func main() {
    fmt.Print("HELLO"[1])
}
Salin selepas log masuk

Outputnya ialah 69 dan bukannya huruf "E."

Memahami Pengekodan Rentetan Golang

Golang menggunakan pengekodan UTF-8 untuk literal rentetan. Aksara ASCII, termasuk huruf "E," menduduki satu bait. Walau bagaimanapun, aksara Unicode yang lebih besar mungkin diwakili oleh berbilang bait.

Menggunakan Runes untuk Pengindeksan Aksara

Untuk mengindeks aksara dengan betul, gunakan rune: integer mewakili titik kod Unikod. Rune ialah jenis asas untuk aksara dalam UTF-8. Anda boleh menukar bait kepada rune menggunakan fungsi rune().

Menukar Bait kepada Aksara

Untuk menukar bait kepada aksara yang sepadan, anda boleh menggunakan string() function:

fmt.Println(string("Hello"[1])) // ASCII only
Salin selepas log masuk

Pendekatan ini berfungsi dengan baik untuk ASCII aksara.

Menukar Runes kepada Aksara

Untuk aksara Unicode, anda boleh menukar rune kepada aksara menggunakan hirisan []rune():

fmt.Println(string([]rune("Hello, 世界")[1])) // UTF-8
Salin selepas log masuk

Contoh dengan Aksara Unikod

Pertimbangkan contoh berikut:

fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
Salin selepas log masuk

Ini akan mencetak "界," iaitu titik kod Unikod untuk aksara Cina "dunia."

Sumber Tambahan

  • [Pergi bahagian Spesifikasi Bahasa Pengaturcaraan pada Penukaran](https://golang.org/ref/spec#Conversions)
  • [The Go Blog: Rentetan, bait, rune dan aksara dalam Go](https://blog.golang.org/strings -bytes-runes-and-character-in-go)

Atas ialah kandungan terperinci Mengapa Pengindeksan Rentetan di dalam Sentiasa Mengembalikan Watak yang Dijangkakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan