-
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.Println("%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.Println("'%s' -> '%s'\n", src, dst) } } func copyFile(src, 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) }
查看全部 -
/* go语言读取解析vs工程文件 */ package main import ( "bytes" "encoding/xml" "fmt" "io/ioutil" ) //获取xml格式的节点属性值 func getAttributeValue(attr []xml.Attr, name string) string { for _, a := range attr { if a.Name.Local == name { return a.Value } } return " " } func main() { //读取文件 content, err := ioutil.ReadFile("vs.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 //fmt.Println(name) //打印出xml的开始节点 if inItemGroup { if name == "ClCompile" { fmt.Println(name) fmt.Println(getAttributeValue(token.Attr, "Include")) } } else { if name == "ItemGroup" { inItemGroup = true } } case xml.EndElement: if inItemGroup { if token.Name.Local == "ItemGroup" { inItemGroup = false } } } } }查看全部
-
package main import ( "flag" "fmt" ) //第一种样式 func style() { //格式化定义 //flag.String("method","default","提示") 第一个参数是名字,第二个是默认值,第三个值是用法说明 methodPtr := flag.String("method", "default", "提示用法说明") 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() { //style() style2() }查看全部
-
package main import ( "encoding/xml" "fmt" ) //人物档案 结构体 type person struct { Name string Age int } func main() { //给结构体赋值 p := person{Name: "霜花似雪", Age: 18} //将结构体类型序列化出来,以xml格式展现 if data, err := xml.Marshal(p); err != nil { fmt.Println(err) return } else { fmt.Println(string(data)) } fmt.Println("\n") //将结构体类型序列化出来,以xml格式展现, //MarshalIndent(p,""," ")第二个参数是前缀,第三个参数是缩进 if data, err := xml.MarshalIndent(p, "", " "); err != nil { fmt.Println(err) return } else { fmt.Println(string(data)) } fmt.Println("\n") //将结构体类型序列化出来,以xml格式展现, //MarshalIndent(p,""," ")第二个参数是前缀,第三个参数是缩进 if data, err := xml.MarshalIndent(p, "#", " "); err != nil { fmt.Println(err) return } else { fmt.Println(string(data)) } }查看全部
-
package main import ( "fmt" "strconv" ) func main() { //go语言中整型与字符串相互转换API //输入整型数据输出字符串 fmt.Println(strconv.Itoa(10)) //输入字符串转化为整型 fmt.Println(strconv.Atoi("711")) //字符串解析 //解析为Bool类型 fmt.Println(strconv.ParseBool("false")) //0,f,F,false,FALSE,False fmt.Println(strconv.ParseBool("True")) //1,t,T,true,TRUE,True //解析为float类型,32是位数,是精度 fmt.Println(strconv.ParseFloat("3.14", 32)) //格式化 fmt.Println(strconv.FormatBool(true)) //FormatInt(123, 10),10表示是10进制,这个函数可以实现进制之间的转化 fmt.Println(strconv.FormatInt(123, 10)) //十进制 fmt.Println(strconv.FormatInt(123, 2)) //二进制 fmt.Println(strconv.FormatInt(20, 16)) //十六进制 }查看全部
-
package main import ( "fmt" "strings" ) func main() { s := "hello world" //判断字符串s是否在字符串hello中存在 fmt.Println(strings.Contains(s, "hello"), strings.Contains(s, "?")) //输出字符o在字符串中的索引 fmt.Println(strings.Index(s, "o")) ss := "1#2#3#456" //切割字符串 //采用Split函数根据#作为分隔符,分割字符串 splitedStr := strings.Split(ss, "#") fmt.Println(splitedStr) //合并字符串 fmt.Println(strings.Join(splitedStr, "#")) //判断字符串s中是否包含he开头的前缀 fmt.Println(strings.HasPrefix(s, "he")) ////判断字符串s中是否包含ld结尾的后缀 fmt.Println(strings.HasSuffix(s, "ld")) }查看全部
-
字符串处理常见操作查看全部
-
金龙咯嘛查看全部
-
咯哦哦查看全部
-
谈谈查看全部
-
咯拒绝查看全部
-
干嘛查看全部
-
空空查看全部
-
尽量少重复发明轮子,除非你在练习某项技能;查看全部
-
字符串是否包含前缀:HasPrefix(); 字符串是否包含后缀:HasSuffix();查看全部
举报
0/150
提交
取消