गो में एक YAML फ़ाइल को पार्स करना
गो में YAML फ़ाइलों को पार्स करने में gopkg.in/yaml.v2 के माध्यम से उपलब्ध YAML लाइब्रेरी का उपयोग करना शामिल है। प्रदान किया गया कोड नेस्टेड कुंजी-मूल्य जोड़े के साथ एक YAML फ़ाइल को पार्स करने के लिए डिज़ाइन किया गया है, जैसे कि:
firewall_network_rules: rule1: src: blablabla-host dst: blabla-hostname
हालाँकि, मूल्यों के साथ कुंजी-मूल्य जोड़े को पार्स करने का प्रयास करते समय समस्याएँ उत्पन्न होती हैं। कार्यान्वित संरचना इन मानों को परिभाषित नहीं करती है, जिससे पार्सिंग के दौरान त्रुटि होती है।
इस समस्या के समाधान के लिए, वास्तविक दुनिया के YAML उदाहरण को शामिल करने पर विचार करें, जैसे कि Google क्लाउड या कुबेरनेट्स से एक service.yaml:
apiVersion: v1 kind: Service metadata: name: myName namespace: default labels: router.deis.io/routable: "true" annotations: router.deis.io/domains: "" spec: type: NodePort selector: app: myName ports: - name: http port: 80 targetPort: 80 - name: https port: 443 targetPort: 443
यह उदाहरण नेस्टेड कुंजी-मूल्य संबंधों को प्रदर्शित करता है और एक व्यावहारिक उपयोग का मामला प्रदान करता है। संबंधित गो संरचना इस प्रकार होगी:
type Service struct { APIVersion string `yaml:"apiVersion"` Kind string `yaml:"kind"` Metadata struct { Name string `yaml:"name"` Namespace string `yaml:"namespace"` Labels struct { RouterDeisIoRoutable string `yaml:"router.deis.io/routable"` } `yaml:"labels"` Annotations struct { RouterDeisIoDomains string `yaml:"router.deis.io/domains"` } `yaml:"annotations"` } Spec struct { Type string `yaml:"type"` Selector struct { App string `yaml:"app"` } Ports []struct { Name string `yaml:"name"` Port int `yaml:"port"` TargetPort int `yaml:"targetPort"` NodePort int `yaml:"nodePort,omitempty"` } `yaml:"ports"` } }
प्रक्रिया को सरल बनाने के लिए, yaml-to-go और json-to-go जैसी सेवाएं YAML को Go structs में परिवर्तित करने के लिए सुविधाजनक उपकरण प्रदान करती हैं, जिससे पार्सिंग कार्य अधिक प्रबंधनीय हो जाता है।
अंत में, अपनी संरचना में YAML फ़ाइल को अनमर्शल करने के लिए, आप निम्नलिखित कोड का उपयोग कर सकते हैं:
var service Service err := yaml.Unmarshal(yourFile, &service) if err != nil { panic(err) }
यह दृष्टिकोण सेवा संरचना के माध्यम से पार्स किए गए डेटा तक पहुंच सक्षम बनाता है, जिससे आप अपने गो एप्लिकेशन में YAML फ़ाइल की जानकारी के साथ बातचीत कर सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3