Go (Golang) में YAML के साथ कार्य: go-yaml और yaml.v3 लाइब्रेरीज़

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go (Golang) में YAML के साथ कार्य: पूर्ण मार्गदर्शिका



YAML (YAML Ain't Markup Language) एक मानव-पठनीय डेटा सीरियलाइज़ेशन प्रारूप है, जो कॉन्फ़िगरेशन फ़ाइलों, इंफ्रास्ट्रक्चर विवरण (जैसे Kubernetes, Docker Compose) और डेटा आदान-प्रदान के लिए व्यापक रूप से उपयोग किया जाता है। Go (Golang) इकोसिस्टम में, YAML के साथ कार्य शक्तिशाली तृतीय-पक्ष लाइब्रेरीज़ के माध्यम से कार्यान्वित किया जाता है, मुख्य रूप से go-yaml (जिसे gopkg.in/yaml.v3 के नाम से जाना जाता है) के माध्यम से। इस लेख में, हम विस्तार से समझेंगे कि Go में YAML दस्तावेज़ों को कैसे पार्स, बनाया और प्रोसेस किया जाए।



Go डेवलपर के लिए YAML क्यों महत्वपूर्ण है?

Go उच्च-प्रदर्शन वाले सर्वर एप्लिकेशन, DevOps टूल और माइक्रोसर्विसेज़ बनाने की भाषा है। YAML निम्नलिखित के लिए डी-फैक्टो मानक बन गया है:

  • एप्लिकेशन कॉन्फ़िगरेशन (जैसे, config.yaml);
  • Kubernetes मैनिफेस्ट (deployment.yaml);
  • CI/CD पाइपलाइन (GitLab CI, GitHub Actions);
  • API और डेटा स्कीमा का विवरण।

Go में YAML के साथ कार्य करने की क्षमता के बिना, इस भाषा में आधुनिक विकास की कल्पना नहीं की जा सकती।



Go में YAML के साथ कार्य करने के लिए मुख्य लाइब्रेरीज़

आज, लाइब्रेरी के दो मुख्य संस्करण मौजूद हैं:

  • gopkg.in/yaml.v2 — पुराना स्थिर संस्करण, अभी भी लोकप्रिय है;
  • gopkg.in/yaml.v3 — वर्तमान संस्करण जिसमें टैग, चैनल और बेहतर त्रुटि प्रबंधन का समर्थन है (नई परियोजनाओं के लिए अनुशंसित)।

दोनों लाइब्रेरीज़ Marshal (स्ट्रक्चर → YAML) और Unmarshal (YAML → स्ट्रक्चर) फ़ंक्शन प्रदान करती हैं।



लाइब्रेरी की स्थापना

आरंभ करने के लिए, प्रोजेक्ट में पैकेज जोड़ें:

go get gopkg.in/yaml.v3

इसे कोड में इम्पोर्ट करें:

import "gopkg.in/yaml.v3"


उदाहरण 1: YAML को स्ट्रक्चर में पार्स करना (Unmarshal)

एक कॉन्फ़िगरेशन फ़ाइल config.yaml बनाएँ:

server:  host: "localhost"  port: 8080database:  driver: "postgres"  dsn: "host=localhost user=app password=secret dbname=mydb"logging:  level: "info"  file: "/var/log/app.log"

अब इस फ़ाइल को पढ़ने के लिए Go कोड लिखें:

package main

import ( "fmt" "os" "gopkg.in/yaml.v3")

type Config struct { Server ServerConfig `yaml:"server"` Database DatabaseConfig `yaml:"database"` Logging LoggingConfig `yaml:"logging"`}

type ServerConfig struct { Host string `yaml:"host"` Port int `yaml:"port"`}

type DatabaseConfig struct { Driver string `yaml:"driver"` DSN string `yaml:"dsn"`}

type LoggingConfig struct { Level string `yaml:"level"` File string `yaml:"file"`}

func main() { data, err := os.ReadFile("config.yaml") if err != nil { panic(err) }

var cfg Config err = yaml.Unmarshal(data, &cfg) if err != nil { panic(err) }

fmt.Printf("Server: %s:%d", cfg.Server.Host, cfg.Server.Port) fmt.Printf("Database driver: %s", cfg.Database.Driver) fmt.Printf("Log level: %s", cfg.Logging.Level)}

आउटपुट:

Server: localhost:8080Database driver: postgresLog level: info


उदाहरण 2: स्ट्रक्चर को YAML में सीरियलाइज़ करना (Marshal)

अब एक स्ट्रक्चर बनाएँ और इसे YAML में बदलें:

package main

import ( "fmt" "gopkg.in/yaml.v3")

type AppConfig struct { Name string `yaml:"name"` Version string `yaml:"version"` Debug bool `yaml:"debug"` Tags []string `yaml:"tags"`}

func main() { cfg := AppConfig{ Name: "MyApp", Version: "1.0.0", Debug: false, Tags: []string{"production", "stable"}, }

out, err := yaml.Marshal(&cfg) if err != nil { panic(err) }

fmt.P

अनुशंसाएँ