用了viper
,但更新配置后注释没了,这太要命了,找了一圈没发现合适的,配置文件可以是json5
与yaml
,别的类型不能储存复杂数据
谢谢
我也找过,目前只发现一个办法。像是 go-yaml 这个库提供了 yaml.Node
结构,Marshal
/Unmarshal
到这个结构可以保留注释信息。
package mainimport ( "log" "strings" yaml "gopkg.in/yaml.v3")func main() { var node yaml.Node data := []byte(strings.TrimSpace(`block1: # the comment map: key1: a key2: b block2: hi: there`)) log.Printf("INPUT:\n %s", data) if err := yaml.Unmarshal(data, &node); err != nil { log.Fatalf("Unmarshalling failed %s", err) } results, err := yaml.Marshal(node.Content[0]) if err != nil { log.Fatalf("Marshalling failed %s", err) } log.Printf("RESULT:\n %s", results)}
输出
2009/11/10 23:00:00 INPUT: block1: # the comment map: key1: a key2: b block2: hi: there2009/11/10 23:00:00 RESULT: block1: # the comment map: key1: a key2: bblock2: hi: there
可能重复: 如何使用请求下载图像 我知道获取url就像,我可以获取原始响应主体并将其保存到文件中,但对于大型文件,有没有直接流式处理到文件的方法?比如说,如果我下载了一部电影或者别的什么?
问题内容: 我知道获取网址非常简单,我可以获取原始响应正文并将其保存到文件中,但是对于大型文件,是否可以直接流式传输到文件?就像我要下载电影或类似的东西吗? 问题答案: 奇怪的是,请求没有什么简单的方法。您必须遍历响应并将这些块写入文件: 我通常只是使用。它可以工作,但是如果您需要使用会话或某种身份验证,那么上面的代码也可以工作。
问题内容: 我需要能够使用读取同一键的多个值。配置文件示例: 使用“标准”将有一个带有值的键。但是我需要解析器读取两个值。 在重复键输入之后,我创建了以下示例代码: 第一部分(带有)读入我们的“常规”配置文件,仅保留其值(覆盖/删除其他值),然后得到以下预期输出: 第二部分()使用我的方法将多个值附加到列表中,但输出是 如何摆脱重复的价值观?我期望的输出如下: 要么 (我不在乎是否每个值都在列表中
问题内容: 我需要使用Selenium和保留我的缓存。我有一个Firefox配置文件,并在启动时加载了它: 这可以按预期的方式工作,但 不会 复制缓存。转到,它是空的。我想保留我的缓存,我想直接使用我的个人资料。当前复制并使用配置文件的一部分,但不使用缓存。 使用时如何保持缓存? 问题答案: 找出解决方案。 使用此方法加载配置文件不起作用: 对我来说,这确实有效: 现在,我有了正确的完整缓存。
Gradle 2.2 SDK Build Tools 19.0.0。一些特性可能需要更高版本。 译者注: Gradle 版本可以关注:Gradle 官方网站 Android Plugin 版本可关注:Android Plugin for Gradle Release Notes
Vue.js 支持 typeScript 的推荐配置: // tsconfig.json { "compilerOptions": { // 与 Vue 的浏览器支持保持一致 "target": "es5", // 这可以对 `this` 上的数据属性进行更严格的推断 "strict": true, // 如果使用 webpack 2+ 或 rollup,可以