package main import ( "encoding/json" "flag" "fmt" "io/ioutil" "log" "net/http" ) var ( endpoint = flag.String("e", "https://gogs.example.com/api/v1", "Gogs server endpoint, possibly github e.g. https://api.github.com") user = flag.String("u", "", "Username to look for") ) type Key struct { Key string `json: key` } func (k Key) String() string { return k.Key } func errDie(err error) { if err != nil { log.Fatal(err) } } func main() { flag.Parse() str := fmt.Sprintf("%s/users/%s/keys", *endpoint, *user) resp, err := http.Get(str) errDie(err) defer resp.Body.Close() b, err := ioutil.ReadAll(resp.Body) errDie(err) keyList := []Key{} err = json.Unmarshal(b, &keyList) errDie(err) for _, k := range keyList { fmt.Println(k) } }