请教一个关于字符串转struct的问题

nolove · · 1295 次点击
<a href="/user/jan-bar" title="@jan-bar">@jan-bar</a> 您好,谢谢您的解答,我先看看 再次感谢
#2
更多评论
jan-bar
想要拥有,必定付出。
【[我的博客](https://www.janbar.top/index.php/2019/11/07/99.html)】 我感觉你需要这个 ```go package main import ( &#34;encoding/json&#34; &#34;flag&#34; &#34;fmt&#34; &#34;strings&#34; ) func main() { var m MyType flag.Var(&amp;m, &#34;m&#34;, &#34;MyType&#34;) var s1 SliceString flag.Var(&amp;s1, &#34;s1&#34;, &#34;s1 use [,]&#34;) s2 := SliceString{Sep: &#34;|&#34;} flag.Var(&amp;s2, &#34;s2&#34;, &#34;s2 use [|]&#34;) flag.Parse() fmt.Printf(&#34;%#v\n&#34;, m.Get()) fmt.Printf(&#34;%#v\n&#34;, s1.Get()) fmt.Printf(&#34;%#v\n&#34;, s2.Get()) } type MyType struct { S string A string `json:&#34;a&#34;` B int `json:&#34;b&#34;` C bool `json:&#34;c&#34;` } func (s *MyType) Get() MyType { return *s } func (s *MyType) Set(set string) error { s.S = set return json.Unmarshal([]byte(s.S), s) } func (s *MyType) String() string { return s.S } type SliceString struct { S, Sep string } func (s *SliceString) Get() []string { sep := &#34;,&#34; if s.Sep != &#34;&#34; { sep = s.Sep } return strings.Split(s.S, sep) } func (s *SliceString) Set(set string) error { s.S = set return nil } func (s *SliceString) String() string { return s.S } ``` 当执行:.app -m &#34;{&#34;A&#34;:&#34;abc&#34;,&#34;B&#34;:123,&#34;C&#34;:true}&#34; -s1 &#34;abc,123,def&#34; -s2 &#34;xyz|wer|cvb&#34; 下面是运行结果: main.MyType{A:&#34;abc&#34;, B:123, C:true} []string{&#34;abc&#34;, &#34;123&#34;, &#34;def&#34;} []string{&#34;xyz&#34;, &#34;wer&#34;, &#34;cvb&#34;}
#1