Concatena le stringhe in modo efficiente in Go

Suraj Joshi 30 gennaio 2023
  1. Con l’operatore Plus (+)
  2. Con più argomenti nella funzione Print()
  3. Con la funzione Join()
  4. Metodo Sprintf()
  5. Metodo bytes.Buffer
  6. Metodo strings.Builder
  7. Aggiungi con l’operatore +=
  8. Confronto di metodi diversi
Concatena le stringhe in modo efficiente in Go

L’atto di fondere due o più stringhe in un’unica nuova stringa è chiamato concatenazione di stringhe. La concatenazione di stringhe è una delle operazioni più ampiamente eseguite nella programmazione. In questo articolo, discuteremo diversi metodi per concatenare le stringhe nel linguaggio di programmazione Go con i loro pro e contro.

Con l’operatore Plus (+)

L’uso di + è il metodo più semplice e più utilizzato per la concatenazione di stringhe. A volte l’operatore + è anche chiamato operatore di concatenazione.

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

Produzione:

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

Con più argomenti nella funzione Print()

Possiamo passare più stringhe come argomenti alla funzione Print() in Go. Le stringhe vengono concatenate automaticamente aggiungendo uno spazio bianco tra le stringhe.

package main

import "fmt"

func main() {

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

Produzione:

String Concatenation!!

Con la funzione Join()

Possiamo anche concatenare stringhe usando la funzione join() presente nel pacchetto di stringhe che prende una fetta di stringhe e un separatore per unirle producendo una singola stringa.

Sintassi:

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

dove str è la fetta di stringhe da cui concateniamo elementi e sep è il separatore posto tra le sezioni.

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

Produzione:

This-is-String-Concatenation!!

Metodo Sprintf()

L’uso del metodo Sprintf() nel pacchetto fmt è anche uno dei metodi più semplici per la concatenazione di stringhe.

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

Produzione:

We will Rock You!!

Metodo bytes.Buffer

Un modo efficiente per concatenare stringhe senza la generazione di oggetti stringa non necessari è il metodo bytes.Buffer. Possiamo scrivere stringhe nel buffer di byte usando il metodo WriteString() e poi trasformarlo in stringa.

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

Produzione:

Hello World!!

Metodo strings.Builder

Questo metodo consente una concatenazione efficiente di stringhe utilizzando una memoria molto inferiore rispetto ad altri.

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

Produzione:

Hello World!!

Aggiungi con l’operatore +=

È simile alla concatenazione di stringhe che utilizza l’operatore più ma leggermente più corto del precedente. L’operatore += aggiunge una nuova stringa a destra della stringa specificata.

package main

import "fmt"

func main() {
    str_1 := "Hello "

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

}

Produzione:

Final String: Hello World!!

Confronto di metodi diversi

I metodi bytes.Buffer e strings.Builder sono molto più veloci di altri metodi di concatenazione di stringhe. Quindi, quando dobbiamo eseguire la concatenazione di stringhe in una quantità enorme, preferiamo i metodi bytes.Buffer e strings.Builder. Tuttavia, quando il numero di concatenazioni è piccolo, possiamo usare gli operatori + o +.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Go String