[go] Go 언어에서의 데이터 인코딩 기술

Go 언어는 많은 언어와 조금 다른 인코딩 기술을 사용합니다. 이 기술들은 다양한 데이터 형식에서 데이터를 인코딩하고 디코딩하는 데 사용됩니다. 이 기술들을 통해 안전하고 효율적으로 데이터를 다룰 수 있습니다.

Contents

인코딩 및 디코딩 라이브러리

Go 언어는 데이터를 다양한 형식으로 인코딩하고 디코딩하는 데 사용할 수 있는 표준 라이브러리를 제공합니다. encoding/json, encoding/base64, encoding/xml 등의 패키지를 통해 다양한 데이터 형식에 대한 인코딩 및 디코딩이 가능합니다.

JSON 인코딩과 디코딩

Go 언어는 encoding/json 패키지를 통해 JSON 데이터의 인코딩과 디코딩을 지원합니다. 각각의 Go 타입을 JSON으로 인코딩하거나 JSON 데이터를 Go 타입으로 디코딩할 수 있는 기능을 제공합니다. 아래는 간단한 JSON 데이터를 Go 타입으로 디코딩하는 예시입니다.

package main

import (
	"encoding/json"
	"fmt"
)

type Person struct {
	Name string
	Age  int
}

func main() {
	data := []byte(`{"Name":"Alice","Age":25}`)
	var p Person
	err := json.Unmarshal(data, &p)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	fmt.Println("Name:", p.Name)
	fmt.Println("Age:", p.Age)
}

Byte 슬라이스와 문자열 인코딩

Go 언어의 encoding 패키지 중 encoding/hex, encoding/base64 등은 바이트 슬라이스와 문자열을 다른 형식으로 인코딩하고 디코딩하는 데 사용됩니다. 특히 encoding/hex 패키지는 바이트 슬라이스를 16진수 문자열로 인코딩하거나 그 반대로 디코딩할 수 있습니다.

package main

import (
	"encoding/hex"
	"fmt"
)

func main() {
	data := []byte{10, 20, 30, 40}
	str := hex.EncodeToString(data)
	fmt.Println(str) // Output: "0a141e28"

	decoded, err := hex.DecodeString(str)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	fmt.Println(decoded) // Output: [10 20 30 40]
}

위의 예시 코드에서는 encoding/hex 패키지를 사용하여 바이트 슬라이스를 16진수 문자열로 인코딩하고 다시 디코딩하는 과정을 보여줍니다.

인코딩과 디코딩은 데이터를 다루는 프로그램에서 중요한 부분이며, Go 언어의 인코딩 관련 라이브러리를 이용하여 데이터를 안전하게 처리할 수 있습니다.

References