Пожалуйста, игнорируйте, что это кажется плохой идеей, плохим стилем и т. Д.
Основная проблема здесь в том, что process()
получает указатель на структуру неизвестного типа, переданную как interface{}
и мне нужно клонировать базовую структуру.
Основная проблема заключается в том, что я не могу понять, как задерживать указатель, поскольку он передается как interface{}
, поэтому я могу клонировать базовую структуру и вернутьит.
package main
import (
"fmt"
"reflect"
)
type Foo struct {
Value string
}
func main() {
foo1 := Foo{"bar"}
foo2 := process(&foo1)
result := reflect.DeepEqual(foo1, foo2)
fmt.Println(result) // how do I make this true?
}
// objective: pointer to struct is passed it, clone of underlying struct is returned
func process(i interface{}) interface{} {
return clone(i)
}