Go:
การทำงานร่วมกับ TOML
วิธีการ:
เมื่อต้องการเริ่มทำงานกับ TOML ใน Go คุณต้องเพิ่มไลบรารี่ที่สามารถแยกวิเคราะห์ไฟล์ TOML เนื่องจากไลบรารี่มาตรฐานของ Go ไม่รองรับ TOML โดยตรง แพ็คเกจ BurntSushi/toml
เป็นทางเลือกยอดนิยมสำหรับสิ่งนี้ ขั้นแรก ต้องติดตั้งมัน:
go get github.com/BurntSushi/toml
นี่คือตัวอย่างการใช้งานที่ง่าย เช่น คุณมีไฟล์การกำหนดค่าชื่อ config.toml
โดยมีเนื้อหาดังนี้:
title = "ตัวอย่าง TOML"
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true
ตอนนี้คุณต้องสร้างโครงสร้าง Go ที่สะท้อนโครงสร้าง TOML:
package main
import (
"fmt"
"github.com/BurntSushi/toml"
)
type Config struct {
Title string
Database Database `toml:"database"`
}
type Database struct {
Server string
Ports []int
ConnectionMax int `toml:"connection_max"`
Enabled bool
}
func main() {
var config Config
if _, err := toml.DecodeFile("config.toml", &config); err != nil {
fmt.Println(err)
return
}
fmt.Printf("ชื่อเรื่อง: %s\n", config.Title)
fmt.Printf("เซิร์ฟเวอร์ฐานข้อมูล: %s\n", config.Database.Server)
}
ผลลัพธ์ตัวอย่าง:
ชื่อเรื่อง: ตัวอย่าง TOML
เซิร์ฟเวอร์ฐานข้อมูล: 192.168.1.1
ทำลึก
TOML ถูกสร้างโดย Tom Preston-Werner, หนึ่งในผู้ร่วมก่อตั้ง GitHub, เพื่อเสนอรูปแบบไฟล์การกำหนดค่าที่ตรงไปตรงมา ซึ่งสามารถแมปไปยังตารางแฮชและเข้าใจได้ในทันทีโดยไม่ต้องมีความรู้เกี่ยวกับรูปแบบก่อน มันต่างจาก JSON หรือ YAML ที่ในขณะที่ยังถูกใช้กันอย่างแพร่หลาย แต่อาจจะไม่ใช่มิตรกับมนุษย์สำหรับไฟล์การกำหนดค่า เนื่องจากมีประเด็นเกี่ยวกับวงเล็บ อัญประกาศ และการเยื้อง
แพ็คเกจ BurntSushi/toml
ใน Go เป็นไลบรารี่ที่แข็งแกร่งซึ่งไม่เพียงแต่อนุญาตให้ถอดรหัส แต่ยังรวมถึงการเข้ารหัสของไฟล์ TOML เป็นทางเลือกที่หลากหลายสำหรับแอปพลิเคชันที่ต้องการทั้งการอ่านและเขียนไฟล์การกำหนดค่าในรูปแบบนี้ อย่างไรก็ตาม ควรสังเกตว่าด้วยการก้าวหน้าของเทคโนโลยีและการนำเสนอของเวอร์ชัน Go ใหม่ๆ ทางเลือกที่เป็นนวัตกรรมใหม่ เช่น pelletier/go-toml
ได้ปรากฏขึ้น โดยนำเสนอประสิทธิภาพที่ดีขึ้นและคุณสมบัติเพิ่มเติม เช่น การจัดการต้นไม้และการสนับสนุนการค้นหา
ถึงแม้ว่า TOML จะเป็นทางเลือกที่ดีสำหรับแอปพลิเคชันมากมาย แต่ขึ้นอยู่กับความซับซ้อนของการกำหนดค่าแอปพลิเคชันและความชอบส่วนบุคคลหรือทีม รูปแบบอื่น เช่น YAML หรือ JSON อาจเหมาะสมกว่า โดยเฉพาะถ้าการกำหนดค่าต้องการโครงสร้างข้อมูลที่ซับซ้อนมากขึ้น ซึ่งธรรมชาติของ TOML ที่มีคำอธิบายมากอาจไม่สามารถจับคู่ได้อย่างสวยงาม อย่างไรก็ตาม สำหรับการกำหนดค่าที่ตรงไปตรงมา อ่านง่าย และแก้ไขได้ง่าย TOML ร่วมกับระบบประเภทที่แข็งแกร่งของ Go และไลบรารี่ที่กล่าวถึงข้างต้น เป็นทางเลือกที่ยอดเยี่ยม