editor php Youzi akan membawa anda meneroka bait dan rentetan di Golang secara mendalam. Di Golang, bait dan rentetan ialah jenis data biasa, tetapi terdapat beberapa perbezaan halus dan kaedah penukaran antara mereka. Memahami perbezaan dan kaedah penukaran ini akan membantu anda memproses data anda dengan lebih baik dan mengoptimumkan prestasi program. Artikel ini akan memperkenalkan konsep bait dan rentetan, kaedah penukaran bersama dan senario penggunaannya dalam aplikasi praktikal, membantu anda memahami dan menggunakan bait dan rentetan dengan lebih baik dalam Golang. Mari kita meneroka bersama-sama!
Saya cuba mencari elemen sepunya antara dua rentetan yang sama panjang dalam golang.
Elemen ditemui, tetapi perwakilan rentetan nampaknya mengandungi nilai bait juga. Bagaimana saya boleh menyingkirkannya?
func main() { println(fmt.printf("common element = %s", findcommonelement("abcdefghi", "ijklmnopq"))) } func findcommonelement(firstelements, secondelements string) string { elementsinfirstgroup := make(map[string]bool) for _, charvalue := range firstelements { elementsinfirstgroup[string(charvalue)] = true } for index := range firstelements { if _, ok := elementsinfirstgroup[string(secondelements[index])]; ok { matchingelem := secondelements[index] println(string(matchingelem)) return string(matchingelem) } } panicmessage := fmt.sprintf("could not find a common item between %s and %s", firstelements, secondelements) panic(panicmessage) }
Output yang saya dapat ialah
i common element = i18 (0x0,0x0)
Kod di sini
Anda harus menggunakan fmt.sprintf
而不是 fmt.printf
.
Dan elakkan menggunakan terbina dalam println
,而是使用 fmt.println
.
https://pkg.go.dev/[emel dilindungi]#printf
func printf(format string, a ...any) (n int, err error)
printf memformat dan menulis kepada output standard mengikut penentu format. Ia mengembalikan bilangan bait yang ditulis dan sebarang ralat penulisan yang dihadapi.
Oleh itu 18 (0x0,0x0)
...
18
是字符串 "common element = i"
. (0x0,0x0)
是由 println
打印的 nil
Nilai ralat. Lebih penting lagi, bagaimanapun, algoritma anda adalah cacat kerana ia mencampurkan bait dengan rune. Apabila anda melakukannya range
时,迭代变量 charvalue
将被分配一个 rune
,它可能是多字节的。但是,当您索引字符串(例如 secondelements[index]
)时,其结果始终是单个 byte
pada rentetan. Oleh itu, panik atau omong kosong (bait tidak sah) pasti akan menjadi hasil daripada fungsi anda. Lihat Contoh.
Anda mungkin mendapat hasil yang lebih baik dengan melakukan perkara berikut:
func findCommonElement(firstElements, secondElements string) string { second := map[rune]bool{} for _, r := range secondElements { second[r] = true } for _, r := range firstElements { if second[r] { fmt.Println(string(r)) return string(r) } } panic("...") }
//m.sbmmt.com/link/dbdc69ea6ccbdea0ca2d796e1af24ebf
Atas ialah kandungan terperinci Bait dan rentetan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!