Изучение GoLang: перебор полей структуры

В GoLang структуры — это фундаментальный тип данных, используемый для определения пользовательских структур данных. Перебор полей структуры позволяет вам получать доступ к хранящимся в них данным и манипулировать ими. В этой статье мы рассмотрим различные методы перебора полей структуры в GoLang, сопровождаемые примерами кода.

Метод 1: использование отражения
GoLang предоставляет мощный пакет отражения, который позволяет нам проверять и манипулировать полями структуры во время выполнения. Пакет reflectпредоставляет такие функции, как TypeOfи ValueOf, для получения информации о полях структуры и их значениях. Вот пример:

package main
import (
    "fmt"
    "reflect"
)
type Person struct {
    Name    string
    Age     int
    Address string
}
func main() {
    p := Person{Name: "John Doe", Age: 30, Address: "123 Main St"}
    v := reflect.ValueOf(p)
    t := v.Type()
    for i := 0; i < v.NumField(); i++ {
        field := v.Field(i)
        fmt.Printf("Field Name: %s, Field Value: %v\n", t.Field(i).Name, field.Interface())
    }
}
package main
import (
    "fmt"
    "reflect"
)
type Person struct {
    Name    string `json:"name"`
    Age     int    `json:"age"`
    Address string `json:"address"`
}
func main() {
    p := Person{Name: "John Doe", Age: 30, Address: "123 Main St"}
    v := reflect.ValueOf(p)
    t := v.Type()
    for i := 0; i < v.NumField(); i++ {
        field := v.Field(i)
        tag := t.Field(i).Tag.Get("json")
        fmt.Printf("Field Name: %s, Tag: %s, Field Value: %v\n", t.Field(i).Name, tag, field.Interface())
    }
}

Не забудьте поэкспериментировать с этими методами и изучить документацию GoLang, чтобы узнать о более продвинутых методах. Приятного кодирования!