English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En el lenguaje Go, las cadenas son diferentes de otros lenguajes, como Java, c++、Python, etc. Es una secuencia de caracteres anchos, donde cada carácter se representa con UTF-8Codificación de uno o más bytes. O换句话说,la cadena es una secuencia de caracteres de bytes (incluso bytes con valor cero) inmutables, o la cadena es un fragmento de bytes solo de lectura, los bytes de la cadena pueden usar UTF-8Codificación se representa en texto Unicode.
Debido a la adopción de UTF-8Codificación,las cadenas de Go pueden contener texto, y el texto es una mezcla de cualquier lenguaje del mundo, sin causar confusión y limitaciones en la página. Generalmente, las cadenas se utilizanComillas dobles””Citado,como se muestra en el siguiente ejemplo:
//Cómo crear una cadena package main import "fmt" func main() { //Crear e inicializar //Variable con cadena //usar declaración abreviada My_value_1 = "Bienvenido a oldtoolbag.com" //Uso de la palabra clave var var My_value_2 string My_value_2 = "w3codebox" //mostrar la cadena fmt.Println("Cadena:", mystring) 1: ", My_value_1) fmt.Println("Cadena:", mystring) 2: ", My_value_2) }
salida:
String 1: Bienvenido a oldtoolbag.com String 2: w3codebox
Nota:La cadena puede estar vacía, pero no puede ser nil.
En el lenguaje Go, las cadenas literales se crean de dos formas diferentes:
Uso de comillas dobles (""):Aquí, las cadenas literales se crean usando comillas dobles ("")。Este tipo de cadenas de texto admite caracteres de escape, como se muestra en la tabla siguiente, pero no se extienden a múltiples líneas. Este tipo de texto literal se utiliza ampliamente en programas de Go.
Carácter de escape | Descripción |
---|---|
\\\ | Barra invertida (\) |
\000 | dado3con8Carácter Unicode de código de punto octal |
\’ | Comillas simples (')。Sólo se permiten en cadenas de caracteres |
\” | Comillas dobles ("")。Sólo se permiten en cadenas de texto interpretadas |
\a | Campana ASCII (BEL) |
\b | Tecla de retroceso ASCII (BS) |
\f | Carácter de cambio de página ASCII (FF) |
\n | Carácter de nueva línea ASCII (LF) |
\r | Carácter de retorno de carro ASCII (CR) |
\t | Carácter de etiqueta ASCII (TAB) |
\uhhhh | dado4con16caracteres Unicode de código hexadecimal. |
dado8con32caracteres Unicode de código hexadecimal. | |
\v | Caracter de tabulación vertical ASCII (VT) |
\xhh | dado2con8caracteres Unicode de código hexadecimal. |
Uso de comillas invertidas (``):Aquí, el texto literal se crea usando comillas invertidas (``), también conocido comoLiterals raw(Texto original). El texto original no admite caracteres de escape, puede cruzar múltiples líneas y puede contener cualquier carácter excepto las comillas invertidas. Generalmente, se utiliza para escribir mensajes en línea en expresiones regulares y HTML.
package main import "fmt" func main() { //Crear e inicializar //Variable con texto literal //Uso de comillas dobles My_value_1 = "Bienvenido a w3codebox" //Agregar caracteres de escape My_value_2 = "Bienvenido!\nw3codebox" //Uso de comillas invertidas My_value_3 = `Hello!w3codebox` //Agregar caracteres de escape //Texto original My_value_4 = `Hello!\nw3codebox` //Mostrar fmt.Println("Cadena:", mystring) 1: ", My_value_1) fmt.Println("Cadena:", mystring) 2: ", My_value_2) fmt.Println("Cadena:", mystring) 3: ", My_value_3) fmt.Println("Cadena:", mystring) 4: ", My_value_4) }
salida:
String 1: Bienvenido a w3codebox String 2: Bienvenido! w3codebox String 3: Hello!w3codebox String 4: Hello!\nw3codebox
Las cadenas son inmutables:En el lenguaje Go, una vez creada una cadena, esta es inmutable y no se puede cambiar el valor de la cadena. En otras palabras, las cadenas son de solo lectura. Si se intenta cambiar, el compilador generará un error.
//Las cadenas son inmutables package main import "fmt" func main() { //crear e inicializar una cadena //usar declaración abreviada mystr := "Welcome to w3codebox" fmt.Println("Cadena:", mystr) /* Si intentas cambiar el valor de la cadena, el compilador lanzará un error, por ejemplo, no se puede asignar a mystr[1] mystr[1= 'G' fmt.Println("Cadena:", mystr) */ }
salida:
Cadena: Bienvenido a w3codebox
¿Cómo recorrer una cadena? :Puedes usar el bucle for range para recorrer una cadena. Este bucle puede iterar sobre los puntos de código Unicode de una cadena.
Sintaxis:
for index, chr := range str{ // sentencia... }
Aquí, el índice es el que almacena UTF-8Variable para el primer byte del código punto de la codificación, mientras quechr esVariable para almacenar los caracteres de la cadena dada, str es una cadena.
//Recorrer una cadena //Uso de bucle for range package main import "fmt" func main() { //La cadena como rango en un bucle for for index, s := range "w3codebox" { fmt.Printf("%c índice es %d\n", s, index) } }
salida:
El índice de n es 0 El índice de h es 1 El índice de o es 2 El índice de o es 3 El índice de o es 4
¿Cómo acceder a un byte individual de una cadena?Una cadena es un byte, por lo tanto, podemos acceder a cada byte de la cadena dada.
//Acceder a los bytes de una cadena package main import "fmt" func main() { //Crear e inicializar una cadena str := "Bienvenido a w3codebox" //acceder a los bytes de la cadena dada for c := 0; c < len(str); c++ { fmt.Printf("\ncarácter = %c bytes = %v", str[c], str[c]) } }
salida:
carácter = W bytes = 87 carácter = e bytes = 101 carácter = l bytes = 108 carácter = c bytes = 99 carácter = o bytes = 111 carácter = m bytes = 109 carácter = e bytes = 101 carácter = bytes = 32 carácter = t bytes = 116 carácter = o bytes = 111 carácter = bytes = 32 carácter = n bytes = 110 carácter = h bytes = 104 carácter = o bytes = 111 carácter = o bytes = 111 carácter = o bytes = 111
¿Cómo crear una cadena desde un slice?:En el lenguaje Go, se permite crear una cadena a partir de un slice de bytes.
//crear una cadena desde un slice package main import "fmt" func main() { //crear e inicializar un slice de bytes myslice1 := []byte{0x47, 0x65, 0x65, 0x6b, 0x73} //crear una cadena desde un slice mystring1 := string(myslice1) //mostrar la cadena fmt.Println("Cadena:", mystring) 1: ", mystring1) //crear e inicializar un slice de caracteres myslice2 := []rune{0x0047, 0x0065, 0x0065, 0x006b, 0x0073} //crear una cadena desde un slice mystring2 := string(myslice2) //mostrar la cadena fmt.Println("Cadena:", mystring) 2: ", mystring2) }
salida:
String 1: Geeks String 2: Geeks
¿Cómo encontrar la longitud de una cadena?:En las cadenas de Golang, se pueden usar dos funciones (una eslen(),otra esRuneCountInString())para encontrar la longitud de la cadena. UTF-8el paquete proporciona la función RuneCountInString(),que devuelve el número total de caracteres en la cadena.len()la función devuelve el número de bytes de la cadena.
//encontrar la longitud de la cadena package main import (" "fmt" "unicode/utf8" ) func main() { //crear e inicializar una cadena //usar declaración abreviada mystr := "Welcome to w3codebox ??????" //encontrar la longitud de la cadena //usar la función len() longitud1 := len(mystr) //usar la función RuneCountInString() longitud2 := utf8.RuneCountInString(mystr) //mostrar la longitud de la cadena fmt.Println("cadena:", mystr) fmt.Println("Longitud 1:", longitud1) fmt.Println("Longitud 2:", longitud2) }
salida:
string: Welcome to w3codebox ?????? Longitud 1: 31 Longitud 2: 31