How to: Getting Values From Viper
The simplest way to retrieve configuration values from Viper is to use `Get*`
functions. `Get` will return an any type, but specific types may be retrieved
with `Get
` functions.

Note that each `Get*` function will return a zero value if it’s key is not
found. To check if a key exists, use the `IsSet` method.

Nested keys use `.` as a delimiter and numbers for array indexes. Given the
following configuration:

```jsonc
{
    "datastore": {
        "metric": {
            "host": "127.0.0.1",
            "ports": [
                5799,
                6029
            ]
        }
    }
}

```

```go
GetString("datastore.metric.host") // "127.0.0.1"
GetInt("host.ports.1") // 6029
```

> **NOTE** Viper _does not_ deep merge configuration values. Complex values
> that are overridden will be entirely replaced.

If there exists a key that matches the delimited key path, its value will be
returned instead.

```jsonc
{
    "datastore.metric.host": "0.0.0.0",
    "datastore": {
        "metric": {
            "host": "127.0.0.1"
        }
    }
}
```

```go
GetString("datastore.metric.host") // "0.0.0.0"
```