Go 언어에서 문자열 활용법

프로젝트를 진행하면서 가장 많이 사용하는 데이터 타입 중 하나는 문자열입니다. 예를 들어, API를 작성할 때 클라이언트로부터 받은 요청 대부분이 문자열일 것입니다. 여기서는 Go 언어에서 문자열을 다루는 방법에 대해 간단히 정리해보겠습니다.

문자열의 형식화 출력

package main
import "fmt"
func main() {
    fmt.Println("안녕하세요")
}

위 코드는 매우 기본적인 출력입니다. 좀 더 복잡한 내용을 출력해봅시다.

package main
import "fmt"
func main() {
    fmt.Printf("안녕하세요, 제 이름은 %v입니다.", "Alice")
}

출력하려는 문자열에 특정 값을 삽입하려면 형식화된 출력을 사용해야 합니다. 아래 표는 주요 형식화 동사와 그 기능을 나타냅니다:

동사 설명
%v 값의 원래 형태로 출력
%+v 구조체 필드 이름과 값 모두 출력
%#v Go 언어 문법 형태로 값 출력
%T Go 언어 문법 형태로 타입과 값 출력
%% 퍼센트 기호 자체 출력
%b 정수를 2진수로 출력
%o 정수를 8진수로 출력
%d 정수를 10진수로 출력
%x 정수를 소문자 16진수로 출력
%X 정수를 대문자 16진수로 출력
%U 유니코드 문자 출력
%f 부동소수점 숫자 출력
%p 포인터를 16진수로 출력

문자열의 타입 변환

클라이언트로부터 받은 데이터를 처리하기 위해서는 종종 타입 변환이 필요합니다. 예를 들어, 문자열을 int 또는 int64로 변환하는 경우를 살펴보겠습니다.

package main
import (
    "fmt"
    "strconv"
)

func main() {
    strToInt := "1"
    intVal := 2
    
    // 문자열을 int로 변환
    convertedInt, err := strconv.Atoi(strToInt)
    if err != nil {
        fmt.Errorf("타입 변환 오류: %v", err)
    }
    
    fmt.Println(intVal + convertedInt)
}

이제 stringint64로 변환하는 예제를 보겠습니다:

package main
import (
    "fmt"
    "strconv"
)

func main() {
    strToInt64 := "1"
    
    // 문자열을 int64로 변환
    convertedInt64, err := strconv.ParseInt(strToInt64, 10, 64)
    // int64를 문자열로 변환
    convertedStr := strconv.FormatInt(convertedInt64, 10)
    convertedBackInt64, err := strconv.ParseInt(convertedStr, 10, 64)
    
    fmt.Println(convertedBackInt64 + convertedInt64)
}

문자열의 암호화 및 복호화

데이터 전송 시 암호화는 필수적입니다. 예를 들어, Base64와 MD5 같은 일반적인 암호화 알고리즘을 사용할 수 있습니다.

Base64

package main
import (
    "fmt"
    "encoding/base64"
)

func main() {
    input := []byte("hello world")
    encodedString := base64.StdEncoding.EncodeToString(input)
    
    fmt.Println(encodedString)

    decodedBytes, err := base64.StdEncoding.DecodeString(encodedString)
    if err != nil {
        fmt.Println(err)
    }
    
    fmt.Println(string(decodedBytes))
}

MD5

package main
import (
    "fmt"
    "crypto/md5"
)

func main() {
    input := []byte("hello world")
    hash := md5.Sum(input)
    md5Str := fmt.Sprintf("%x", hash) // []byte를 16진수 문자열로 변환
    
    fmt.Println(md5Str)
}

태그: go string manipulation type conversion encryption Base64

8월 1일 07:27에 게시됨