Go에서 문자열을 효율적으로 연결하는 방법

Suraj Joshi 2023년1월30일
  1. 더하기 (+) 연산자 사용
  2. Print()함수에 여러 개의 인수가있는 경우
  3. Join()함수로
  4. Sprintf()메소드
  5. bytes.Buffer 메소드
  6. strings.Builder 메소드
  7. +=연산자로 추가
  8. 다른 방법의 비교
Go에서 문자열을 효율적으로 연결하는 방법

둘 이상의 ‘문자열’을 하나의 새로운 ‘문자열’로 병합하는 동작을 ‘문자열 연결’이라고합니다. ‘문자열 연결’은 프로그래밍에서 가장 널리 수행되는 작업 중 하나입니다. 이 기사에서는 Go 프로그래밍 언어로 문자열을 장단점으로 연결하는 다양한 방법에 대해 설명합니다.

더하기 (+) 연산자 사용

+를 사용하는 것은 문자열 연결에 가장 단순하고 가장 널리 사용되는 방법입니다. 때때로+연산자는 연결 연산자라고도합니다.

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

출력:

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

Print()함수에 여러 개의 인수가있는 경우

GoPrint()함수에 인수로 여러 개의 문자열을 전달할 수 있습니다. 문자열 사이에 공백을 추가하여 문자열이 자동으로 연결됩니다.

package main

import "fmt"

func main() {

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

출력:

String Concatenation!!

Join()함수로

또한 문자열 패키지에 존재하는join()함수를 사용하여 문자열을 연결하여 문자열 조각과 구분 기호를 사용하여 단일 문자열을 생성 할 수 있습니다.

통사론:

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

여기서str은 요소를 연결하는 문자열 조각이며,sep는 조각 사이에있는 구분 기호입니다.

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

출력:

This-is-String-Concatenation!!

Sprintf()메소드

fmt 패키지에서Sprintf()메소드를 사용하는 것도 문자열 연결을위한 가장 간단한 메소드 중 하나입니다.

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

출력:

We will Rock You!!

bytes.Buffer 메소드

불필요한 문자열 객체를 생성하지 않고 문자열을 연결하는 효율적인 방법은bytes.Buffer 방법입니다. WriteString()메소드를 사용하여 문자열을 바이트 버퍼에 쓴 다음 문자열로 변환 할 수 있습니다.

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

출력:

Hello World!!

strings.Builder 메소드

이 방법을 사용하면 다른 메모리에 비해 매우 적은 메모리를 사용하여 문자열을 효율적으로 연결할 수 있습니다.

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

출력:

Hello World!!

+=연산자로 추가

더하기 연산자를 사용하는 문자열 연결과 비슷하지만 이전 연산자보다 약간 짧습니다. +=연산자는 지정된 문자열의 오른쪽에 새 문자열을 추가합니다.

package main

import "fmt"

func main() {
    str_1 := "Hello "

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

}

출력:

Final String: Hello World!!

다른 방법의 비교

bytes.Bufferstrings.Builder 메소드는 다른 문자열 연결 메소드보다 훨씬 빠릅니다. 따라서 문자열 연결을 대량으로 수행해야하는 경우에는bytes.Bufferstrings.Builder 메소드를 선호합니다. 그러나 연결 수가 적을 때는+또는+=연산자를 사용할 수 있습니다.

작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

관련 문장 - Go String