더북(TheBook)

문자열은 한번 생성되면 그 값을 변경할 수 없으므로 +로 문자열을 조합하면 조합할 때마다 항상 새로운 문자열을 생성한다. 그래서 문자열을 +로 조합하는 것은 효율적이지 않다. 문자열을 조합할 때 + 대신 strings.Join () 함수를 사용하거나 bytes.Buffer 타입을 사용하면 더 빠르고 효율적이다.

▼ + 연산자 사용

package main
 
import (
    "fmt"
    "math"
    "unicode"
)
 
func main() {
    var str string
    for i := 0; i < math.MaxUint8; i++ {
        if s, ok := nextString(i); ok {
            str += s
        }
    }
    fmt.Print(str, "\n")
}
 
func nextString(i int) (s string, ok bool) {
    if unicode.IsLetter(rune(i)) {
        return string(i), true
    }
    return "", false
}

실행 결과

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ

▼ strings.Join() 함수 사용

package main
 
import (
    "fmt"
    "math"
    "strings"
    "unicode"
)
 
func main() {
    strArr := []string{}
    for i := 0; i < math.MaxUint8; i++ {
        if s, ok := nextString(i); ok {
            strArr = append(strArr, s)
        }
    }
    fmt.Println(strings.Join(strArr, ""))
}
 
func nextString(i int) (s string, ok bool) {
    if unicode.IsLetter(rune(i)) {
        return string(i), true
    }
    return "", false
}

실행 결과

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ

▼ bytesBuffer 타입 사용

package main
 
import (
    "bytes"
    "fmt"
    "math"
    "unicode"
)
 
func main() {
    var buffer bytes.Buffer
    for i := 0; i < math.MaxUint8; i++ {
        if s, ok := nextString(i); ok {
            buffer.WriteString(s)
        }
    }
    fmt.Print(buffer.String(), "\n")
}
 
func nextString(i int) (s string, ok bool) {
    if unicode.IsLetter(rune(i)) {
        return string(i), true
    }
    return "", false
}

실행 결과

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.