Since all of the `net` APIs deal with `addr`, I'd use an `addr string` instead of `host`/`port`. Also, you can just write `string` once:

```go
func (c *DiscoverClient) RegisterWithHost(name, addr string, attributes map[string]string) error { 
```