1. Content string
  2. Cities []string
  3. }
  4. type Person struct {
  5. Name string
  6. Age int `ini:"age"`
  7. Male bool
  8. Born time.Time
  9. Note
  10. Created time.Time `ini:"-"`
  11. }
  12. func main() {
  13. cfg, err := ini.Load("path/to/ini")
  14. // ...
  15. p := new(Person)
  16. err = cfg.MapTo(p)
  17. // ...
  18. // 一切竟可以如此的简单。
  19. // ...
  20. n := new(Note)
  21. err = cfg.Section("Note").MapTo(n)
  22. // ...
  23. }

结构的字段怎么设置默认值呢?很简单,只要在映射之前对指定字段进行赋值就可以了。如果键未找到或者类型错误,该值不会发生改变。

  1. // ...
  2. p := &Person{
  3. Name: "Joe",
  4. }
  5. // ...

这样玩 INI 真的好酷啊!然而,如果不能还给我原来的配置文件,有什么卵用?

可是,我有说不能吗?

  1. NAME = Unknwon
  2. Male = true
  3. ; Author's age
  4. Age = 21
  5. GPA = 2.8
  6. ; Embeded section
  7. [Embeded]
  8. ; Time data
  9. Dates = 2015-08-07T22:14:22+08:00|2015-08-07T22:14:22+08:00
  10. places = HangZhou,Boston

如果您希望配合 ShadowLoad 将某个分区映射到结构体,则需要指定 allowshadow 标签。

假设您有以下配置文件:

  1. [IP]
  2. value = 192.168.31.201

您应当通过如下方式定义对应的结构体:

任何嵌入的结构都会被默认认作一个不同的分区,并且不会自动产生所谓的父子分区关联:

  1. type Child struct {
  2. Age string
  3. }
  4. type Parent struct {
  5. Name string
  6. Child
  7. }
  8. type Config struct {
  9. City string
  10. Parent
  11. }

示例配置文件:

  1. City = Boston
  2. [Parent]
  3. Name = Unknwon
  4. [Child]
  5. Age = 21

很好,但是,我就是要嵌入结构也在同一个分区。好吧,你爹是李刚!

  1. City = Boston
  2. [Parent]

另请查看 的有关用法。