I have the following function:
func read(filePath string, structure *[]interface) {
raw, err := ioutil.ReadFile(filePath)
if err != nil {
fmt.Println(err.Error())
os.Exit(1)
}
json.Unmarshal(raw, structure)
}
Which I call like this:
indexes := []Index
read(path + "/" + element + ".json", &indexes)
However, I'm getting strange error that vanish when I take off structure *[]interface
from the function declaration:
./index.verb.go:73: syntax error: unexpected ), expecting {
I think something wront when I try to pass a pointer to a slice of generic type. How should I do it then? I can't do structure *[]Index
because there are other types I wanna return too
Declare the function like this:
func read(filePath string, structure interface{}) error {
raw, err := ioutil.ReadFile(filePath)
if err != nil {
return err
}
return json.Unmarshal(raw, structure)
}
The structure
value is passed through to json.Unmarshal
and can be any type supported by json.Unmarshal
.
Call it like this:
var indexes []Index
err := read(path + "/" + element + ".json", &indexes)
if err != nil {
fmt.Println(err.Error())
os.Exit(1)
}