Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk melintasi rentetan dalam bahasa go

Bagaimana untuk melintasi rentetan dalam bahasa go

青灯夜游
Lepaskan: 2023-01-14 10:43:52
asal
5949 orang telah melayarinya

Kaedah rentas rentetan: 1. Gunakan pernyataan "untuk julat" untuk merentasi, sintaks ialah "untuk kunci, nilai := julat str {...}" 2. Gunakan fungsi Map() bagi pakej rentetan untuk melintasi , sintaksnya ialah "trings.Map(func(rune), original string)", dengan parameter "func(rune)" ialah fungsi panggil balik yang digunakan untuk memproses setiap aksara dalam rentetan.

Bagaimana untuk melintasi rentetan dalam bahasa go

Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.

Kaedah untuk melintasi rentetan dalam bahasa go

Kaedah 1: Gunakan pernyataan untuk julat

Struktur julat ialah struktur lelaran unik bagi bahasa Go. Ia sangat berguna dalam banyak situasi untuk julat boleh merentasi tatasusunan, kepingan, rentetan, peta dan saluran adalah serupa dengan bahasa lain. Bentuk umum pernyataan foreach ialah:

for key, val := range coll {
    ...
}
Salin selepas log masuk

Perlu diambil perhatian bahawa val sentiasa merupakan salinan nilai indeks yang sepadan dalam koleksi, jadi ia secara amnya hanya mempunyai sifat baca sahaja, dan sebarang pengubahsuaian yang dibuat padanya Ia tidak akan menjejaskan nilai asal dalam koleksi. Rentetan ialah koleksi aksara yang dikodkan Unikod (atau rune), jadi ia juga boleh digunakan untuk mengulang rentetan:

for pos, char := range str {
    ...
}
Salin selepas log masuk

Setiap aksara rune dan indeks adalah satu demi satu dalam gelung julat untuk Sejajar, ia boleh mengenal pasti aksara berkod Unikod secara automatik mengikut peraturan UTF-8.

Kod berikut menunjukkan cara melintasi rentetan:

package main
import (
	"fmt"
)
func main() {
	var str = "hello 你好"
	for key, value := range str {
		fmt.Printf("key:%d value:0x%x\n", key, value)
	}
}
Salin selepas log masuk

Keluaran kod adalah seperti berikut:

Bagaimana untuk melintasi rentetan dalam bahasa go

Pembolehubah dalam nilai kod , jenis sebenar ialah jenis rune, dan mencetaknya dalam perenambelasan ialah pengekodan aksara.

Kaedah 2: Gunakan strings.Map() function

Semasa proses pembangunan, banyak kali kita perlu memetakan setiap aksara dalam rentetan Untuk pemprosesan, dalam Perjalanan bahasa, fungsi strings.Map() disediakan untuk melaksanakan fungsi tersebut.

func Map(mapping func(rune) rune, s string) string
Salin selepas log masuk
参数描述
mapping对字符串中每一个字符的处理函数。
s原字符串。

Nilai pulangan:

  • Mengembalikan rentetan yang diproses.

Penjelasan:

  • Peta setiap aksara dalam rentetan s. Pemetaan ialah fungsi tanpa nama yang menerima parameter jenis rune dan mengembalikan parameter jenis rune.

Contoh 1: Lintas rentetan dan alihkan setiap aksara rentetan ke belakang sedikit

package main
import (
	"fmt"
	"strings"
)
func strEncry(r rune)rune{
	return r+1
}
func main() {
	//使用 strings.Map() 函数,实现将一个字符串中的每一个字符都后移一位
	strHaiCoder := "HaiCoder"
	mapStr := strings.Map(strEncry, strHaiCoder)
	fmt.Println("mapStr =", mapStr)
}
Salin selepas log masuk

Bagaimana untuk melintasi rentetan dalam bahasa go

Analisis:

  • Kami mentakrifkan pembolehubah jenis rentetan strHaicoder, dan kemudian kami menggunakan rentetan.Map() fungsi rentetan untuk memproses setiap aksara rentetan menggunakan fungsi strEncry, dan menggunakan cetakan Cetak akhir hasil.

  • Fungsi strEncry melaksanakan fungsi menambah satu pada kod ASCII sesuatu aksara, iaitu, menggerakkan aksara itu ke belakang sedikit, jadi rentetan yang kita lalui ialah "HaiCoder", yang akhirnya menjadi "IbjDpefs".

[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]

Atas ialah kandungan terperinci Bagaimana untuk melintasi rentetan dalam bahasa go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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