Bagaimana untuk melarikan diri % dalam golang

PHPz
Lepaskan: 2023-03-30 11:40:27
asal
2161 orang telah melayarinya

Dalam beberapa tahun kebelakangan ini, dengan perkembangan berterusan dan populariti industri Internet, bahasa pengaturcaraan telah menjadi semakin penting. Di antara banyak bahasa pengaturcaraan, Golang digemari oleh pembangun kerana kelebihan prestasinya yang pantas, cekap dan selamat.

Walaupun Golang mempunyai prestasi yang cekap, ia juga menghadapi pelbagai masalah dan cabaran. Salah satu masalah biasa ialah watak melarikan diri di Golang, terutamanya watak melarikan diri "%".

Di Golang, jika anda perlu menggunakan aksara melarikan diri "%", anda perlu mengulanginya dua kali, iaitu, "%%" Ini kerana di Golang, tanda peratus "%" itu sendiri a Watak melarikan diri. Oleh itu, apabila Golang mengendalikan rentetan yang mengandungi tanda peratus "%", ia akan menganggapnya sebagai rentetan format dan menghuraikan parameter yang mengikutinya sebagai parameter format.

Sebagai contoh, jika anda perlu mencetak rentetan "10%" dalam Golang, anda perlu menulisnya sebagai "fmt.Printf("10%%")". Di sini, tanda peratus pertama "%" mewakili watak melarikan diri, dan tanda peratus kedua "%" mewakili tanda peratus sebenar yang akan dikeluarkan.

Jika anda terus menulis "fmt.Printf("10%"), Golang akan berfikir bahawa anda ingin memformat output dan akan mencari parameter berikut untuk output, jadi hasil yang salah akan muncul. Ini kerana Golang akan menghuraikan aksara selepas tanda peratus "%" sebagai sebahagian daripada rentetan terformat tanpa mengendalikan tanda peratus itu sendiri dengan betul.

Sama seperti masalah ini, terdapat satu lagi ralat biasa - masalah tanda peratus semasa mengekod URL. Dalam permintaan HTTP, tanda peratus dalam URL biasanya mewakili aksara melarikan diri, menukar beberapa aksara atau bait khas kepada beberapa rentetan yang dikodkan khas. Contohnya, %20 mewakili ruang dan %3A mewakili titik bertindih.

Di Golang, anda juga menghadapi masalah tanda peratus apabila pengekodan URL. Jika anda menggunakan fungsi pengekodan URL Golang sendiri untuk pengekodan, anda juga perlu memberi perhatian untuk melepaskan tanda peratus. Contohnya, gunakan fungsi Encode dalam "net/url" untuk mengekod rentetan dalam Golang:

import "net/url"

encodeStr := url.QueryEscape("http://www.baidu.com/?query=测试&name=百度")
fmt.Println(encodeStr) // 输出:http%3A%2F%2Fwww.baidu.com%2F%3Fquery%3D%E6%B5%8B%E8%AF%95%26name%3D%E7%99%BE%E5%BA%A6
Salin selepas log masuk

Seperti yang anda lihat, Golang melarikan diri daripada semua aksara khas dalam parameter dan menggunakan Tanda peratus mengekodnya.

Walau bagaimanapun, jika anda ingin memperkenalkan aksara melarikan diri tersuai, seperti tanda peratus "%" yang dinyatakan sebelum ini, Golang akan menyebabkan ralat penyahkodan. Sebagai contoh, kod berikut akan menyebabkan ralat:

import "net/url"

encodeStr := url.QueryEscape("http://www.baidu.com/?query=测试&name=10%")
fmt.Println(encodeStr) // 输出:http%3A%2F%2Fwww.baidu.com%2F%3Fquery%3D%E6%B5%8B%E8%AF%95%26name%3D10
Salin selepas log masuk

Seperti yang anda lihat, hanya "10" yang tinggal dalam "10%" dalam hasil pengekodan dan aksara akan hilang semasa penyahkodan, dengan itu Menyebabkan ralat program.

Dalam kes ini, penyelesaiannya juga sangat mudah, cuma gantikan watak yang perlu dilepaskan dengan watak lain. Sebagai contoh, gantikan tanda peratus "%" dengan "%25" (pengekodan URL bagi tanda peratus):

import "net/url"
import "strings"

encodeStr := url.QueryEscape(strings.Replace("http://www.baidu.com/?query=测试&name=10%", "%", "%25", -1))
fmt.Println(encodeStr) // 输出:http%3A%2F%2Fwww.baidu.com%2F%3Fquery%3D%E6%B5%8B%E8%AF%95%26name%3D10%25
Salin selepas log masuk

Dengan cara ini, hasil pengekodan akan dinyahkod dengan betul.

Secara umumnya, watak melarikan diri "%" dalam Golang memerlukan perhatian khusus dan perlu diulang dua kali untuk menggunakannya dengan betul. Apabila mengekod URL, jika anda perlu menggunakan tanda peratus untuk melarikan diri, pemprosesan khas diperlukan untuk mengelakkan ralat penyahkodan. Hanya dengan cara ini kami boleh menggunakan sepenuhnya kelebihan Golang, mengelakkan ralat yang tidak dijangka dan menjadikan kod kami lebih mantap dan cekap.

Atas ialah kandungan terperinci Bagaimana untuk melarikan diri % dalam golang. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan