Cómo concatenar eficientemente las cadenas en Go

Suraj Joshi 30 enero 2023
  1. Con el operador plus (+)
  2. Con múltiples argumentos en la función Print()
  3. Con la función Join()
  4. Método Sprintf()
  5. Método bytes.Buffer
  6. Método strings.Builder
  7. Añadir con += Operador
  8. Comparación de diferentes métodos
Cómo concatenar eficientemente las cadenas en Go

El acto de fusionar dos o más cadenas en una sola cadenas nueva se llama Concatenación de cadenas. La Concatenación de cadenas es una de las operaciones más realizadas en la programación. En este artículo, discutiremos diferentes métodos para concatenar cadenas en el lenguaje de programación Go con sus pros y contras.

Con el operador plus (+)

Usar + es el método más simple y más ampliamente utilizado para la concatenación de cadenas. A veces el operador + también se llama operador de concatenación.

package main

import "fmt"

func main() {

    str_1 := "Welcome to "
    str_2 := "the Blog!!"
    fmt.Println("str_1: ", str_1)
    fmt.Println("str_2: ", str_2)
    fmt.Println("Combined String: ", str_1+str_2)
}

Producción :

str_1:  Welcome to 
str_2:  the Blog!!
Combined String:  Welcome to the Blog!!

Con múltiples argumentos en la función Print()

Podemos pasar múltiples cadenas como argumentos a la función Print() en Go. Las cadenas se concatenan automáticamente añadiendo espacios en blanco entre ellas.

package main

import "fmt"

func main() {

    fmt.Println("String", "Concatenation!!")
}      

Producción :

String Concatenation!!

Con la función Join()

También podemos concatenar cadenas usando la función join() presente en el paquete de cadenas que toma una rebanada de cadenas y un separador para unirlas y producir una sola cadena.

Sintaxis:

func Join(str []string, sep string) string

donde str es el trozo de cadena del que concatenamos los elementos y sep es el separador que se coloca entre los trozos.

   package main

import (
    "fmt"
    "strings" //for join() function
)

func main() {

    str_slices := []string{"This", "is",
        "String", "Concatenation!!"}

    str_concat := strings.Join(str_slices, "-")
    fmt.Println(str_concat)
}
  

Producción :

This-is-String-Concatenation!!

Método Sprintf()

Usar el método Sprintf() en el paquete fmt es también uno de los métodos más simples para la concatenación de cadenas.

package main

import "fmt"

func main() {
    str_1 := "We will"
    str_2 := " Rock"
    str_3 := " You!!"

    str_final := fmt.Sprintf("%s%s%s", str_1, str_2, str_3)

    fmt.Println(str_final)
} 

Producción :

We will Rock You!!

Método bytes.Buffer

Una forma eficiente de concatenar cadenas sin generar el innecesario objeto cadena es el método bytes.Buffer. Podemos escribir cadenas en un búfer de bytes usando el método WriteString() y luego transformarlo en cadena.

package main

import (
    "bytes"
    "fmt"
)

func main() {
    var byte_buf bytes.Buffer

    byte_buf.WriteString("Hello ")
    byte_buf.WriteString("World!!")

    fmt.Println(byte_buf.String())
}

Producción :

Hello World!!

Método strings.Builder

Este método permite una concatenación eficiente de las cadenas utilizando muy poca memoria en comparación con otros.

package main

import (
    "fmt"
    "strings"
)

func main() {
    var str_build strings.Builder
    str_build.WriteString("Hello ")
    str_build.WriteString("World!!")
    fmt.Println(str_build.String())
}

Producción :

Hello World!!

Añadir con += Operador

Es similar a la concatenación de cadenas usando el operador plus pero ligeramente más corta que la anterior. El operador += añade una nueva cadena a la derecha de la cadena especificada.

package main

import "fmt"

func main() {
    str_1 := "Hello "

    str_1 += "World!!"
    fmt.Println("Final String:", str_1)

}

Producción :

Final String: Hello World!!

Comparación de diferentes métodos

Los métodos bytes.Buffer y strings.Builder son bastante más rápidos que otros métodos de concatenación de cadenas. Por lo tanto, cuando tenemos que realizar la concatenación de cadenas en una gran cantidad, preferimos los métodos bytes.Buffer y strings.Builder. Sin embargo, cuando el número de concatenaciones es pequeño, podemos usar los operadores + o +=.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Go String