go 写入yaml_Go语言包用于解析和生成YAML数据

该博客介绍了Go语言中的yaml包,用于舒适地编码和解码YAML值。它支持YAML 1.1和1.2的大部分功能,包括锚点、标签和映射合并等。提供了一个示例展示如何将YAML数据反序列化到结构体以及序列化回YAML。
摘要由CSDN通过智能技术生成

YAML support for the Go language

Introduction

The yaml package enables Go programs to comfortably encode and decode YAML values. It was developed within Canonical as part of the juju project, and is based on a pure Go port of the well-known libyaml C library to parse and generate YAML data quickly and reliably.

Compatibility

The yaml package supports most of YAML 1.1 and 1.2, including support for anchors, tags, map merging, etc. Multi-document unmarshalling is not yet implemented, and base-60 floats from YAML 1.1 are purposefully not supported since they're a poor design and are gone in YAML 1.2.

Installation and usage

The import path for the package is gopkg.in/yaml.v2.

To install it, run:

go get gopkg.in/yaml.v2

API documentation

If opened in a browser, the import path itself leads to the API documentation:

API stability

The package API for yaml v2 will remain stable as described in gopkg.in.

License

The yaml package is licensed under the Apache License 2.0. Please see the LICENSE file for details.

Example

package main

import (

"fmt"

"log"

"gopkg.in/yaml.v2"

)

var data = `

a: Easy!

b:

c: 2

d: [3, 4]

`

// Note: struct fields must be public in order for unmarshal to

// correctly populate the data.

type T struct {

A string

B struct {

RenamedC int `yaml:"c"`

D []int `yaml:",flow"`

}

}

func main() {

t := T{}

err := yaml.Unmarshal([]byte(data), &t)

if err != nil {

log.Fatalf("error: %v", err)

}

fmt.Printf("--- t:\n%v\n\n", t)

d, err := yaml.Marshal(&t)

if err != nil {

log.Fatalf("error: %v", err)

}

fmt.Printf("--- t dump:\n%s\n\n", string(d))

m := make(map[interface{}]interface{})

err = yaml.Unmarshal([]byte(data), &m)

if err != nil {

log.Fatalf("error: %v", err)

}

fmt.Printf("--- m:\n%v\n\n", m)

d, err = yaml.Marshal(&m)

if err != nil {

log.Fatalf("error: %v", err)

}

fmt.Printf("--- m dump:\n%s\n\n", string(d))

}

This example will generate the following output:

--- t:

{Easy! {2 [3 4]}}

--- t dump:

a: Easy!

b:

c: 2

d: [3, 4]

--- m:

map[a:Easy! b:map[c:2 d:[3 4]]]

--- m dump:

a: Easy!

b:

c: 2

d:

- 3

- 4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值