Bait dan rentetan Golang
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!
Kandungan soalan
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
Penyelesaian
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)
...
-
Bilangan aksara dalam
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("...") }
https://www.php.cn/link/dbdc69ea6ccbdea0ca2d796e1af24ebf
Atas ialah kandungan terperinci Bait dan rentetan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



OpenSSL, sebagai perpustakaan sumber terbuka yang digunakan secara meluas dalam komunikasi yang selamat, menyediakan algoritma penyulitan, kunci dan fungsi pengurusan sijil. Walau bagaimanapun, terdapat beberapa kelemahan keselamatan yang diketahui dalam versi sejarahnya, yang sebahagiannya sangat berbahaya. Artikel ini akan memberi tumpuan kepada kelemahan umum dan langkah -langkah tindak balas untuk OpenSSL dalam sistem Debian. Debianopenssl yang dikenal pasti: OpenSSL telah mengalami beberapa kelemahan yang serius, seperti: Kerentanan Pendarahan Jantung (CVE-2014-0160): Kelemahan ini mempengaruhi OpenSSL 1.0.1 hingga 1.0.1f dan 1.0.2 hingga 1.0.2 versi beta. Penyerang boleh menggunakan kelemahan ini untuk maklumat sensitif baca yang tidak dibenarkan di pelayan, termasuk kunci penyulitan, dll.

Artikel ini menerangkan cara menggunakan alat PPROF untuk menganalisis prestasi GO, termasuk membolehkan profil, mengumpul data, dan mengenal pasti kesesakan biasa seperti CPU dan isu memori.

Artikel ini membincangkan ujian unit menulis di GO, meliputi amalan terbaik, teknik mengejek, dan alat untuk pengurusan ujian yang cekap.

Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Laluan Pembelajaran Backend: Perjalanan Eksplorasi dari Front-End ke Back-End sebagai pemula back-end yang berubah dari pembangunan front-end, anda sudah mempunyai asas Nodejs, ...

Artikel ini membincangkan menguruskan kebergantungan modul Go melalui Go.Mod, meliputi spesifikasi, kemas kini, dan resolusi konflik. Ia menekankan amalan terbaik seperti versi semantik dan kemas kini biasa.

Artikel ini membincangkan menggunakan ujian yang didorong oleh jadual di GO, satu kaedah yang menggunakan jadual kes ujian untuk menguji fungsi dengan pelbagai input dan hasil. Ia menyoroti faedah seperti kebolehbacaan yang lebih baik, penurunan duplikasi, skalabiliti, konsistensi, dan a
