lundi 30 septembre 2019

Golang update struct field inside function passed as interface

I am new to go (golang). That is why my question may be irrelevant (or impossible to answer).

I have created two structs. Both of these embed another struct. Now I want to update a field of the embedded struct inside a function.

package main

import (
    "fmt"
    "reflect"
    "time"
)

type Model struct {
    UpdatedAt time.Time
}

type Fruit struct {
    Model
    label string
}

type Animal struct {
    Model
    label string
}

func update(v interface{}) {
    reflectType := reflect.TypeOf(v)
    reflectKind := reflectType.Kind()
    if reflectKind == reflect.Ptr {
        reflectType = reflectType.Elem()
    }
    m := reflect.Zero(reflectType)
    fmt.Println(m)
}

func main() {
    apple := &Fruit{
        label: "Apple",
    }
    tiger := &Animal{
        label: "Tiger",
    }
    update(apple)
    update(tiger)
    fmt.Println(apple)
    fmt.Println(tiger)
}

I wish to implement the update function so that it will put the current time in UpdatedAt of the passed struct. But I am not able to do this.

In this case, the field of Fruit and Animal is same: label. But it will not always be. Please keep that in mind when providing your suggestions.

Any guidance would be much appreciated.





Aucun commentaire:

Enregistrer un commentaire