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

Bagaimana untuk melintasi rentetan dalam bahasa go

青灯夜游
青灯夜游asal
2023-01-13 15:57:105903semak imbas

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 {
    ...
}

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 {
    ...
}

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)
	}
}

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
参数 描述
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)
}

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!

Kenyataan:
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