package main
import (
"fmt"
"strings"
)
/*
내부에서 합 연산을 할 때마다 새로운 메모리를 할당하기 때문에 메모리 공간 낭비와 성능 문제 야기
*/
func ToUpper1(str string) string {
var rst string
for _, c := range str {
if c >= 'a' && c <= 'z' {
rst += string('A' + (c - 'a'))
} else {
rst += string(c)
}
}
return rst
}
/*
strings.Builder 객체를 이용해 문자를 더함
WriteRune() 매서드를 통해 문자를 더할 때 새로운 메모리를 생성하지 않고 기존 메모리 공간에 빈자리가 있으면 더함
메모리 공간 낭비를 없앨 수 있음
*/
func ToUpper2(str string) string {
var builder strings.Builder
for _, c := range str {
if c >= 'a' && c <= 'z' {
builder.WriteRune('A' + (c - 'a'))
} else {
builder.WriteRune(c)
}
}
return builder.String()
}
func main() {
var str string = "Hello World"
fmt.Println(ToUpper1(str))
fmt.Println(ToUpper2(str))
}
문자열을 대문자로 변경 시 두개의 메소드 비교