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:
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"
)
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})
}
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"
)
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
", json)
}
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"
)
taip Config struct {<. 🎜>
Name string `yaml:"name"` Age int `yaml:"age"`
// 定义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
}
"fmt" "regexp"
// 定义正则表达式 re := regexp.MustCompile(`d+`) // 匹配字符串 data := "1234 foo 5678 bar" matches := re.FindAllString(data, -1) // 输出匹配结果 for _, match := range matches { fmt.Println(match) }
"fmt" "strings"
// 定义字符串 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)
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!