golang yaml marshal url

WBOY
發布: 2024-02-10 13:33:19
轉載
477 人瀏覽過

golang yaml marshal url

php小編草今天要介紹一個非常實用的技術-golang中的yaml解析和marshal,以及如何處理url。隨著golang在後端開發中的廣泛應用,了解和掌握這些技術將能夠大幅提高我們的開發效率。本文將簡單介紹yaml的基本概念和用法,並透過範例示範如何使用golang進行yaml的解析和marshal操作;同時,我們也將討論如何處理url,包括解析url參數、建構url等。希望透過本文的學習,能夠幫助大家更好地應用這些技巧在實際專案中。

問題內容

我正在嘗試使用具有 url 欄位的配置文件,並且我想封送和解封此類型。 文件指出我可以執行自訂編組函數。

在這個 golang 遊樂場中,您可以看到自訂 unmarshal 函數運作正常,但自訂 marshal 函數則不然:

type YAMLURL struct { *url.URL } func (j *YAMLURL) UnmarshalYAML(unmarshal func(interface{}) error) error { fmt.Println("custom unmarshal function") var s string err := unmarshal(&s) if err != nil { return err } url, err := url.Parse(s) j.URL = url return err } func (j *YAMLURL) MarshalYAML() (interface{}, error) { fmt.Println("custome marshal") return j.String(), nil }
登入後複製

https://go.dev/play/p/24jbjehi1q8

不知道為什麼 謝謝

解決方法

問題是您為指標接收器編寫了marshalyaml方法,因此您可以在指標類型上呼叫此方法,同時您在configuration結構上定義了uria屬性,作為非指標(基於playground)您貼上的連結)。

因此,您必須將uri屬性類型變更為*yamlurl(而不是yamlurl):

type a struct { uri *yamlurl `yaml:"url"` }
登入後複製

或將marshalyaml定義為非指標接收器(又稱值接收器),如下所示:

func (j YAMLURL) MarshalYAML() (interface{}, error) { fmt.Println("custome marshal") return j.String(), nil }
登入後複製

以上是golang yaml marshal url的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!