-
如何在平行結(jié)構(gòu)里處理樹(shù)形結(jié)構(gòu)的數(shù)據(jù)
var?t?xml.Token var?inItemGroup?bool for?t,?err?=?decoder.Token();?err?==?nil;?t,?err?=?decoder.Token(){ ????switch?token?:=?t(type){ ????case?xml.StarElement: ????????name?:=?token.Name.Local ????????if?inItemGroup{ ????????????if?name?==?"Compile"{ ????????????//?第二步,處理標(biāo)記事件 ????????????????fmt.Println(name) ????????????} ????????}else{ ????????????if?name?==?"ItemGroup"{ ????????????//?第一步,找到就開(kāi)啟標(biāo)記 ????????????????inItemGroup?=?true ????????????} ????????} ????} ????case?xml.EndElement: ????//?結(jié)束標(biāo)簽?</EndElement>?標(biāo)記 ????????if?inItemGroup{ ????????????if?token.Name.Local?==?"ItemGroup"{ ????????????//?第三步,?關(guān)閉標(biāo)記 ????????????????inItemGroup?=?false ????????????} ???????????? ????????} }
查看全部 -
經(jīng)驗(yàn)和建議
字符串處理切勿造輪子
字符串轉(zhuǎn)化注意錯(cuò)誤處理
flag.Parse 記得調(diào)
新需求盡量用 json
查看全部 -
實(shí)戰(zhàn)!
從 VS 工程文件獲取文件列表
模擬命令行拷貝文件
查看全部 -
基礎(chǔ)知識(shí)
字符串基本操作,和其他類型的互相轉(zhuǎn)化
XML 編碼處理
命令行解析
查看全部 -
package?main import?( ???"bufio" ???"flag" ???"fmt" ???"io" ???"os" ???"strings" ) func?fileExists(filename?string)?bool?{ ???_,?err?:=?os.Stat(filename) ???return?err?==?nil?||?os.IsExist(err) } //?拷貝文件的行文 func?copyFileAction(src,?dst?string,?showProgress,?force?bool)?{ ???if?!force?{ ??????if?fileExists(dst)?{ ?????????fmt.Printf("%s?exists,?override??y/n\n",?dst) ?????????reader?:=?bufio.NewReader(os.Stdin) ?????????data,?_,?_?:=?reader.ReadLine() ?????????if?strings.TrimSpace(string(data))?!=?"y"?{ ????????????return ?????????} ??????} ???} ???copyFile(src,?dst) ???if?showProgress?{ ??????fmt.Printf("'%s'?->?'%s'\n",?src,?dst) ???} } func?copyFile(src?string,?dst?string)?(w?int64,?err?error)?{ ???srcFile,?err?:=?os.Open(src) ???if?err?!=?nil?{ ??????fmt.Println(err.Error()) ??????return ???} ???defer?srcFile.Close() ???dstFile,?err?:=?os.Create(dst) ???if?err?!=?nil?{ ??????fmt.Println(err.Error()) ??????return ???} ???defer?dstFile.Close() ???return?io.Copy(dstFile,?srcFile) } func?main()?{ ???var?showProgress,?force?bool ??? ???flag.BoolVar(&force,?"f",?false,?"force?copy?when?existing") ???flag.BoolVar(&showProgress,?"v",?false,?"explain?what?is?being?done") ??? ???flag.Parse() ??? ???if?flag.NArg()?<?2?{ ??????flag.Usage() ??????return ???} ???copyFileAction(flag.Arg(0),?flag.Arg(1),?showProgress,?force) }
查看全部 -
-f:強(qiáng)制執(zhí)行
-v:輸出拷貝動(dòng)作
查看全部 -
命令行解析 GO
查看全部 -
模擬 Linux 中的 CP 指令
查看全部 -
模擬命令行拷貝
查看全部 -
package?main import?( ???"bytes" ???"encoding/xml" ???"fmt" ???"io/ioutil" ) func?main()?{ ???content,?err?:=?ioutil.ReadFile("vsproj.csproj") ??? ???decoder?:=?xml.NewDecoder(bytes.NewBuffer(content)) ???var?t?xml.Token ???var?inItemGroup?bool ???for?t,?err?=?decoder.Token();?err?==?nil;?t,?err?=?decoder.Token()?{ ??????switch?token?:=?t.(type)?{ ??????case?xml.StartElement: ?????????name?:=?token.Name.Local ?????????if?inItemGroup?{ ????????????if?name?==?"Compile"?{ ???????????????fmt.Println(getAttributeValue(token.Attr,?"Include")) ????????????} ?????????}?else?{ ????????????if?name?==?"ItemGroup"?{ ???????????????inItemGroup?=?true ????????????} ?????????} ??????case?xml.EndElement: ??????} ???} } func?getAttributeValue(attr?[]xml.Attr,?name?string)?string?{ ???for?_,?a?:=?range?attr{ ??????if?a.Name.Local?==?name?{ ?????????return?a.Value ??????} ???} ???return?"" }
查看全部 -
package?main import?( ???"flag" ???"fmt" ) func?style()??{ ???//?格式化定義 ???methodPtr?:=?flag.String("method",?"default",?"method?of?sample") ???valuePtr?:=?flag.Int("value",?-1,?"value?of?sample") ???//?解析 ???flag.Parse() ???fmt.Println(*methodPtr,?*valuePtr) } func?style2()??{ ???var?method?string ???var?value?int ???flag.StringVar(&method,?"method",?"default",?"method?of?sample") ???flag.IntVar(&value,?"value",?-1,?"value?of?sample") ???flag.Parse() ???fmt.Println(method,?value) } func?main()?{ ???style2() }
查看全部 -
package?main import?( ???"fmt" ???"os" ) func?main()?{ ???fmt.Println(os.Args) }
查看全部 -
package?main import?( ???"encoding/xml" ???"fmt" ) //?人物檔案 type?person?struct?{ ???Name?string?`xml:"name,attr"` ???Age?int?`xml:"年齡"` } func?main()?{ ???p?:=?person{ ??????Name:?"Davy", ??????Age:??18, ???} ???data,?err?:=?xml.MarshalIndent(p,?"",?"????") ???if?err?!=?nil?{ ??????fmt.Println(err) ??????return ???} ???fmt.Println(string(data)) ???var?p2?person ???err?=?xml.Unmarshal(data,?&p2) ???if?err?!=?nil?{ ??????fmt.Println(err) ??????return ???} ???fmt.Println(p2) }
查看全部 -
//?基本數(shù)值轉(zhuǎn)換 fmt.Println(strconv.Itoa(10)) fmt.Println(strconv.Atoi("711")) //?解析 fmt.Println(strconv.ParseBool("false")) fmt.Println(strconv.ParseFloat("3.14",?64)) //?格式化 fmt.Println(strconv.FormatBool(true)) fmt.Println(strconv.FormatInt(123,?2))
查看全部 -
s?:=?"hello?world" //?是否包含 fmt.Println(strings.Contains(s,?"hello"),?strings.Contains(s,?"?")) //?索引,base?0 fmt.Println(strings.Index(s,?"o")) ss?:=?"1#2#345" //?切割字符串 splitedStr?:=?strings.Split(ss,?"#") fmt.Println(splitedStr) //?合并字符串 fmt.Println(strings.Join(splitedStr,?"#")) fmt.Println(strings.HasPrefix(s,?"he"),?strings.HasSuffix(s,?"ld"))
查看全部 -
字符串基本操作
查看全部 -
實(shí)戰(zhàn)
從 VS 工程文件獲取文件列表
模擬命令行拷貝文件
查看全部
舉報(bào)