github.com/Nothing-no/viper@v0.0.0-20230922064921-68b4373f7378/viper_convert.go (about)

     1  package viper
     2  
     3  import "github.com/spf13/viper/internal/convert"
     4  
     5  //MapTo quick map to struct if know what the value carries
     6  //using `viper:"key"`` tag to specify keys
     7  /*
     8  	EG:
     9  	type Service struct {
    10  		Port int    `viper:"port"`
    11  		IP   string `viper:"ip"`
    12  	}
    13  
    14  	SetDefault("service", map[string]interface{}{
    15  		"ip":   "127.0.0.1",
    16  		"port": 1234,
    17  	})
    18  
    19  	var service Service
    20  	err := MapTo("service", &service)
    21  	assert.NoError(t, err)
    22  	assert.Equal(t, Get("service.port"), service.Port)
    23  	assert.Equal(t, Get("service.ip"), service.IP)
    24  */
    25  func MapTo(key string, target interface{}) error {
    26  	return v.MapTo(key, target)
    27  }
    28  
    29  func (v *Viper) MapTo(key string, target interface{}) error {
    30  	return convert.Convert(v.Get(key), target)
    31  }