Advertisement
yerden

Viper YAML sequence

Jan 31st, 2022
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. [yerden@fourier test]$ cat main.go
  2. package main
  3.  
  4. import (
  5. "flag"
  6.  
  7. "github.com/davecgh/go-spew/spew"
  8. "github.com/spf13/viper"
  9. )
  10.  
  11. type Redis struct {
  12. Enabled bool `mapstructure:"enabled"`
  13. Network, Addr string
  14. DbIndex, ScanCount int
  15. }
  16.  
  17. type Config struct {
  18. Redis []Redis `mapstructure:"redis"`
  19. }
  20.  
  21. var cfgFile = flag.String("cfg", "./config.yml", "Specify config file path")
  22.  
  23. func main() {
  24. v := viper.New()
  25. v.SetConfigFile(*cfgFile)
  26.  
  27. if err := v.ReadInConfig(); err != nil {
  28. panic(err)
  29. }
  30.  
  31. var config Config
  32.  
  33. if err := v.UnmarshalKey("redis", &config.Redis); err != nil {
  34. panic(err)
  35. }
  36. spew.Dump(&config.Redis)
  37. }
  38.  
  39.  
  40. [yerden@fourier test]$ cat config.yml
  41. redis:
  42. - enabled: true
  43. network: tcp
  44. addr: "192.168.101.23:7777"
  45. dbindex: 0
  46. scancount: 200
  47. - enabled: false
  48. network: udp
  49. addr: "10.1.1.1:1233"
  50. dbindex: 1
  51. scancount: 123
  52.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement