Golang에서 strings.Builder와 빠르게 연결
9152 단어 goalgorithmsstrings
게시물Concatenating with strings.Builder Quickly in Golang은 Qvault에 처음 등장했습니다.
Go 표준 라이브러리를 사용하면 문자열을 쉽게 연결할 수 있습니다. 연결은 더 큰 문자열을 만들기 위해 문자열을 함께 추가하는 멋진 단어입니다. 예를 들어
"hello"
, " "
및 "world"
를 연결하면 "hello world"
가 됩니다.내장
fmt.Sprintf
함수는 형식과 가변 인터페이스 목록을 입력으로 사용합니다.func Sprintf(format string, a ...interface{}) string
서식 지정 옵션을 사용하면 최종 문자열이 어떻게 보이는지 템플릿을 지정한 다음 문자열에 보간될 입력을 추가할 수 있습니다.
s := fmt.Sprintf("%v has been subscribed since %v.\n", user.Name, user.CreatedAt)
%v
는 주어진 인수가 무엇이든 간에 기본 형식으로 대체되는 간단한 토큰입니다. 우리의 경우에는 string
와 time.Time
였습니다. 모든 서식 옵션은 documentation을 확인하십시오.효율적인 문자열 연결
Go 1.10+는 문자열을 보다 효율적으로 빌드할 수 있는 Awesome
strings.Builder
유형을 출시했습니다. strings.Builder
는 메모리 복사를 최소화하기 때문에 대량 문자열 연결을 수행할 때 고성능 옵션입니다.빠르게 사용자 목록 작성 – 예
먼저 빈 빌더를 만들어 봅시다.
var builder strings.Builder
다음으로 목록에 제목 문자열을 추가해 보겠습니다.
b.WriteString("user list\n")
이제 0-9를 반복하고 각 숫자에 대해 "
user #{i}
"를 포함하는 줄을 작성합니다. strings.Builder
는 io.Writer
interface 을 구현하므로 표준 fmt.Fprintf
함수를 사용할 수 있습니다.for i := 0; i < 10; i++ {
fmt.Fprintf(&b, "user #%d\n", i)
}
전체 문자열을 실제로 인쇄하려면
String()
메서드를 사용할 수 있습니다.fmt.Println(b.String())
전체 코드:
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
b.WriteString("user list\n")
for i := 0; i < 10; i++ {
fmt.Fprintf(&b, "user #%d\n", i)
}
fmt.Println(b.String())
}
더 빠른 속도를 위한 사전 할당
문자열 작성 속도를 정말로 높이고 싶고 최종 문자열의 크기를 이미 알고 있는 경우 작성기
Grow()
메서드를 사용하여 버퍼 크기를 미리 할당할 수 있습니다. 이렇게 하면 메모리를 동적으로 늘릴 필요가 없도록 코드를 절약할 수 있습니다.// Grow grows b's capacity, if necessary, to guarantee space for another n bytes.
// After Grow(n), at least n bytes can be written to b without another allocation.
// If n is negative, Grow panics.
func (b *Builder) Grow(n int)
따라서 우리의 예를 미리 할당하기 위해 다음을 수행할 수 있습니다.
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
b.Grow(90) // we will be writing 90 bytes
b.WriteString("user list\n")
for i := 0; i < 10; i++ {
fmt.Fprintf(&b, "user #%d\n", i)
}
fmt.Println(b.String())
}
읽어 주셔서 감사합니다. 이제 과정을 수강하십시오!
기술 분야의 고임금 직업에 관심이 있으십니까? 실습 코딩 과정을 마친 후 인터뷰를 시작하고 멋지게 통과합니다.
Start coding now
질문?
질문이나 의견이 있으면 트위터에서 나를 팔로우하고 연락하십시오. 기사에서 실수를 한 경우 반드시 let me know 수정하여 수정할 수 있도록 해주세요!
Subscribe 받은 편지함으로 바로 전달되는 더 많은 코딩 기사를 보려면 내 뉴스레터로 보내십시오.
Reference
이 문제에 관하여(Golang에서 strings.Builder와 빠르게 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bootdotdev/concatenating-with-strings-builder-quickly-in-golang-92g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)