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 언어의 인코딩 관련 라이브러리를 이용하여 데이터를 안전하게 처리할 수 있습니다.