の異なるタイプの値を返す私はいくつかの類似した質問(Same method on different array types in Go)異なる種類の同じ方法とゴー
を見てきましたが、私の場合は私の関数は、同じタイプを返しません。
もっと簡単に以下のコードを書くことができますか?
package main
import (
"encoding/json"
"fmt"
)
type A struct {
Name string `json:"name"`
Age int `json:"age"`
}
type B struct {
Name string `json:"name"`
Age int `json:"age"`
Address string `json:address`
}
func UnmarshalA(b []byte) *A {
var t *A
_ = json.Unmarshal(b, &t)
return t
}
func UnmarshalB(b []byte) *B {
var t *B
_ = json.Unmarshal(b, &t)
return t
}
func main() {
a := []byte(`{"name": "aaaa", "age": 1}`)
unmarshal_a := UnmarshalA(a)
fmt.Println(unmarshal_a.Name)
b := []byte(`{"name": "bbbb", "age": 2, "address": "[email protected]"}`)
unmarshal_b := UnmarshalB(b)
fmt.Println(unmarshal_b.Name)
}
// aaaa
// bbbb
https://play.golang.org/p/PF0UgkbSvk
それはすでに簡単です。 – zerkms
関数UnmarshalAとUnmarshalBで繰り返しが発生したようです。 –
私はそれはあなたが探していた答えではない知っているが、それはまったく 'UnmarshalA'と' UnmarshalB'機能を持たないように私には単純なようだ:https://play.golang.org/p/7zY9MW1JpC –