Я Golang новичок ie пытаюсь создать простой интерфейс командной строки. Я конвертирую полезную нагрузку вызова API в структуру и хочу отформатировать некоторую информацию из этой структуры в красивую строку для печати. Одна из информации, которую я хочу напечатать, - это массив структур, как в этом примере:
type Pokemon struct {
Abilities []struct {
Ability struct {
Name string `json:"name"`
URL string `json:"url"`
} `json:"ability"`
IsHidden bool `json:"is_hidden"`
Slot int `json:"slot"`
} `json:"abilities"`
Height int `json:"height"`
ID int `json:"id"`
Name string `json:"name"`
Types []struct {
Slot int `json:"slot"`
Type struct {
Name string `json:"name"`
URL string `json:"url"`
} `json:"type"`
} `json:"types"`
Weight int `json:"weight"`
}
}
Я пытаюсь написать общую c рецепторную функцию, которая выполняет итерацию по некоторым полям, которые являются структурными. массивы и объединить их поля в строку. Я могу выполнить функцию, которая выполняет итерацию по некоторому полю, например:
func (p Pokemon) stringifyPokemonAbilities() string {
var listOfAbilities []string
for _, ability := range p.Abilities {
listOfAbilities = append(listOfAbilities, ability.Ability.Name)
}
return strings.Join(listOfAbilities[:], " / ")
}
Возвращает, например, synchronize / inner-focus
Работая таким образом, мне придется написать почти ту же функцию в Type
поле. Мой вопрос в том, как сделать эту функцию более общей c, принимая поле и повторяя его. Есть мысли?