go
問題:
の派生スカラーのunmarshaljsonの実装の実装。 Unmarshaljsonは、structを使用せずにスカラー値を変更する方法を提供しないため、これは困難です。 unmarshaljsonメソッドレシーバーの値を変更する方法。文字列値。結果を受信機に割り当てます。
var s文字列
err:= json.unmarshal(data、&s); err!= nil {
errを返します
}
*intvalue = lookup(s)
nilを返します
}
コード例: output: hello ralph
こんにちはラルフ
こんにちはラルフ
こんにちはラルフ
パッケージmain
輸入 (
「エンコード/json」
「FMT」
))
タイプペンソリドint
const(
bob personid = iota
ジェーン
ラルフ
誰も= -1
))
var namemap = map [string] personid {
「ボブ」:ボブ、
「ジェーン」:ジェーン、
「ラルフ」:ラルフ、
「誰も」:誰も
}
var idmap = map [personid] string {
ボブ:「ボブ」、
ジェーン:「ジェーン」、
ラルフ:「ラルフ」、
誰も:「誰も」、
}
func(intvalue personid)name()string {
idmapを返す[intvalue]
}
func lookup(name string)personid {
namemap [name]を返す
}
func(intvalue *personid)unmarshaljson(data [] byte)エラー{
var s文字列
err:= json.unmarshal(data、&s); err!= nil {
errを返します
}
*intvalue = lookup(s)
nilを返します
}
タイプmytype struct {
Personid `json:" person "`
count int `json:" count "`
挨拶文字列 `json:"挨拶 "`
}
func main(){
var m mytype
if err:= json.unmarshal([] byte( `{" person ":" ralph "、" count ":4、" greeting ":" hello "}`)、&m); err!= nil {
fmt.println(err)
} それ以外 {
i:= 0; i
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3