Rumah > pembangunan bahagian belakang > Golang > Kemahiran penukaran dan penghuraian format fail dalam bahasa Go

Kemahiran penukaran dan penghuraian format fail dalam bahasa Go

WBOY
Lepaskan: 2023-06-04 11:40:34
asal
1754 orang telah melayarinya

Dengan perkembangan teknologi, semua jenis data dijana dalam kehidupan kita. Contohnya, pelbagai jenis data seperti teks, imej, audio dan video perlu ditukar dan dihuraikan. Antaranya, penukaran dan penghuraian format fail adalah tugas yang sangat biasa dalam kerja. Dalam bahasa Go, terdapat beberapa teknik yang sangat praktikal yang boleh membantu kami menyelesaikan tugasan ini dengan mudah. Dalam artikel ini, kami akan membincangkan penukaran format fail dan teknik penghuraian dalam bahasa Go.

1. Penukaran format fail

Dalam bahasa Go, cara paling biasa untuk mencapai penukaran format fail ialah menggunakan pustaka pihak ketiga. Berikut ialah beberapa perpustakaan pihak ketiga yang biasa digunakan:

  1. imej (perpustakaan pemprosesan imej)

Pakej imej dalam pustaka standard bahasa Go menyediakan sokongan untuk imej itu boleh digunakan untuk memproses gambar dalam format PNG, JPEG, GIF dan lain-lain. Dengan menggunakan pakej imej, anda boleh menukar imej dari satu format ke format lain dengan mudah.

utama pakej

import (

"image"
"image/png"
"os"
Salin selepas log masuk

)

func main() {

// 打开PNG图片
pngFile, err := os.Open("test.png")
if err != nil {
    panic(err)
}
defer pngFile.Close()
// 读取PNG图片
pngImg, err := png.Decode(pngFile)
if err != nil {
    panic(err)
}
// 创建JPEG图片
jpegFile, err := os.Create("test.jpg")
if err != nil {
    panic(err)
}
defer jpegFile.Close()
// 写入JPEG图片
jpegImg := image.NewRGBA(pngImg.Bounds())
jpegImg.Draw(jpegImg.Bounds(), pngImg, image.ZP, draw.Src)
jpeg.Encode(jpegFile, jpegImg, &jpeg.Options{Quality: 80})
Salin selepas log masuk

}

  1. goavro (pustaka penukaran format data Avro)

Apache Avro ialah sistem siri data yang boleh digunakan untuk menyokong berbilang format pengekodan data, seperti JSON, protobuf dan Thrift. goavro ialah perpustakaan penukaran format data Avro yang digunakan dalam bahasa Go, yang boleh digunakan untuk menukar data format Avro kepada format lain.

utama pakej

import (

"fmt"
"github.com/linkedin/goavro"
Salin selepas log masuk

)

func main() {

// 定义Avro JSON字符串
json := []byte(`{"name": "foo","age": 20}`)
// 解析Avro JSON字符串
codec, err := goavro.NewCodec(`{"type":"record","name":"test","fields":[{"name":"name","type":"string"},{"name":"age","type":"int"}]}`)
if err != nil {
    panic(err)
}
datum, _, err := codec.NativeFromTextual(json)
if err != nil {
    panic(err)
}
// 将Avro结构转换为JSON
json, err = codec.TextualFromNative(nil, datum)
if err != nil {
    panic(err)
}
fmt.Printf("%s
Salin selepas log masuk

", json)
}

  1. goyaml (pustaka penukaran format data YAML)

YAML ialah bahasa siri data ringkas yang boleh digunakan dalam pelbagai aplikasi pustaka penukaran format data YAML untuk Go bahasa, yang boleh digunakan untuk menukar data format YAML kepada format lain

pakej utama

import (

"fmt"
"github.com/go-yaml/yaml"
"os"
Salin selepas log masuk

)

taip Config struct {<. 🎜>

Name string `yaml:"name"`
Age  int    `yaml:"age"`
Salin selepas log masuk

}

func main() {

// 定义YAML字符串
yamlString := `
  name: foo
  age: 20
`
// 解析YAML字符串
var config Config
err := yaml.Unmarshal([]byte(yamlString), &config)
if err != nil {
    panic(err)
}
// 将YAML结构转换为JSON
json, err := json.Marshal(config)
if err != nil {
    panic(err)
}
fmt.Printf("%s
Salin selepas log masuk

", json)

}

2. Penghuraian fail

Dalam bahasa Go, penghuraian fail selalunya memerlukan bantuan ungkapan biasa, operasi rentetan dan teknik lain. Berikut adalah beberapa petua biasa.

    Ungkapan biasa (pakej regexp)
Dalam bahasa Go, pakej regexp menyediakan sokongan untuk ungkapan biasa. Ia boleh digunakan untuk mengenal pasti dan mengekstrak corak dalam teks.

utama pakej

import (

"fmt"
"regexp"
Salin selepas log masuk

)

func main() {

// 定义正则表达式
re := regexp.MustCompile(`d+`)
// 匹配字符串
data := "1234 foo 5678 bar"
matches := re.FindAllString(data, -1)
// 输出匹配结果
for _, match := range matches {
    fmt.Println(match)
}
Salin selepas log masuk

}

    Operasi rentetan (pakej rentetan)
Dalam bahasa Go, pakej rentetan menyediakan sokongan untuk rentetan. Ia boleh digunakan untuk mencari, mengekstrak dan memproses rentetan.

utama pakej

import (

"fmt"
"strings"
Salin selepas log masuk

)

func main() {

// 定义字符串
data := "1234 foo 5678 bar"
// 搜索子字符串
if strings.Contains(data, "foo") {
    fmt.Println("found foo")
}
// 提取子字符串
sub := strings.Split(data, " ")[2]
fmt.Println(sub)
// 处理字符串
data = strings.Replace(data, "5678", "abcd", -1)
fmt.Println(data)
Salin selepas log masuk
}

Kesimpulan

Dalam bahasa Go, penukaran dan penghuraian format fail adalah tugas yang sangat biasa. Menggunakan perpustakaan pihak ketiga membolehkan kami menyelesaikan tugasan ini dengan lebih cepat. Pada masa yang sama, kebiasaan dengan ungkapan biasa dan operasi rentetan juga boleh membolehkan kami menghuraikan data dengan lebih cekap. Saya harap artikel ini dapat membantu semua orang, dan saya ucapkan selamat bekerja!

Atas ialah kandungan terperinci Kemahiran penukaran dan penghuraian format fail dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan