Go - Cuerdas

Las cadenas, que se utilizan ampliamente en la programación de Go, son un segmento de bytes de solo lectura. En el lenguaje de programación Go, las cadenas sonslices. La plataforma Go proporciona varias bibliotecas para manipular cadenas.

  • unicode
  • regexp
  • strings

Creando cadenas

La forma más directa de crear una cadena es escribir:

var greeting = "Hello world!"

Siempre que encuentra un literal de cadena en su código, el compilador crea un objeto de cadena con su valor en este caso, "¡Hola mundo!".

Un literal de cadena contiene secuencias UTF-8 válidas llamadas runas. Una cadena contiene bytes arbitrarios.

package main

import "fmt"

func main() {
   var greeting =  "Hello world!"
   
   fmt.Printf("normal string: ")
   fmt.Printf("%s", greeting)
   fmt.Printf("\n")
   fmt.Printf("hex bytes: ")
   
   for i := 0; i < len(greeting); i++ {
       fmt.Printf("%x ", greeting[i])
   }
   
   fmt.Printf("\n")
   const sampleText = "\xbd\xb2\x3d\xbc\x20\xe2\x8c\x98" 
   
   /*q flag escapes unprintable characters, with + flag it escapses non-ascii 
   characters as well to make output unambigous */
   fmt.Printf("quoted string: ")
   fmt.Printf("%+q", sampleText)
   fmt.Printf("\n")  
}

Esto produciría el siguiente resultado:

normal string: Hello world!
hex bytes: 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 
quoted string: "\xbd\xb2=\xbc \u2318"

Note - El literal de cadena es inmutable, por lo que una vez creado, no se puede cambiar un literal de cadena.

Longitud de la cuerda

El método len (str) devuelve el número de bytes contenidos en el literal de cadena.

package main

import "fmt"

func main() {
   var greeting =  "Hello world!"
   
   fmt.Printf("String Length is: ")
   fmt.Println(len(greeting))  
}

Esto produciría el siguiente resultado:

String Length is : 12

Concatenación de cadenas

El paquete de cadenas incluye un método join para concatenar múltiples cadenas -

strings.Join(sample, " ")

Join concatena los elementos de una matriz para crear una sola cadena. El segundo parámetro es el separador que se coloca entre los elementos de la matriz.

Veamos el siguiente ejemplo:

package main

import ("fmt" "math" )"fmt" "strings")

func main() {
   greetings :=  []string{"Hello","world!"}   
   fmt.Println(strings.Join(greetings, " "))
}

Esto produciría el siguiente resultado:

Hello world!