简介 目录 评价 推荐
  • howd 2021-07-13

    如何在平行结构里处理树形结构的数据

    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"{
                // 第二步,处理标记事件
                    fmt.Println(name)
                }
            }else{
                if name == "ItemGroup"{
                // 第一步,找到就开启标记
                    inItemGroup = true
                }
            }
        }
        case xml.EndElement:
        // 结束标签 </EndElement> 标记
            if inItemGroup{
                if token.Name.Local == "ItemGroup"{
                // 第三步, 关闭标记
                    inItemGroup = false
                }
                
            }
    }
    0赞 · 0采集
  • Ganjr 2020-07-25

    经验和建议

    • 字符串处理切勿造轮子

    • 字符串转化注意错误处理

    • flag.Parse 记得调

    • 新需求尽量用 json


    0赞 · 0采集
  • Ganjr 2020-07-25

    实战!

    • 从 VS 工程文件获取文件列表

    • 模拟命令行拷贝文件


    0赞 · 0采集
  • Ganjr 2020-07-25

    基础知识

    • 字符串基本操作,和其他类型的互相转化

    • XML 编码处理

    • 命令行解析


    0赞 · 0采集
  • Ganjr 2020-07-25
    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)
    }


    0赞 · 0采集
  • Ganjr 2020-07-25

    -f:强制执行

    -v:输出拷贝动作


    0赞 · 0采集
  • Ganjr 2020-07-25

    命令行解析 GO

    0赞 · 0采集
  • Ganjr 2020-07-25

    模拟 Linux 中的 CP 指令

    截图
    0赞 · 0采集
  • Ganjr 2020-07-25

    模拟命令行拷贝

    截图
    0赞 · 0采集
  • Ganjr 2020-07-25
    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 ""
    }


    0赞 · 0采集
  • Ganjr 2020-07-23
    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()
    }


    0赞 · 0采集
  • Ganjr 2020-07-23
    package main
    
    import (
       "fmt"
       "os"
    )
    
    func main() {
       fmt.Println(os.Args)
    }


    0赞 · 0采集
  • Ganjr 2020-07-23
    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)
    }


    0赞 · 0采集
  • Ganjr 2020-07-23
    // 基本数值转换
    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))


    0赞 · 0采集
  • Ganjr 2020-07-23
    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"))


    0赞 · 0采集
  • Ganjr 2020-07-23

    字符串基本操作

    截图
    0赞 · 0采集
  • Ganjr 2020-07-23

    实战

    • 从 VS 工程文件获取文件列表

    • 模拟命令行拷贝文件


    0赞 · 0采集
  • Ganjr 2020-07-23

    字符串相关操作

    • 字符串切割,合并,查找

    • 字符串和其他类型的转化

      • 整型布尔型浮点型


    0赞 · 0采集
  • Ganjr 2020-07-23

    Galang 之文本编码处理

    截图
    0赞 · 0采集
  • 宝慕林2201934 2020-07-03
    mix
    截图
    0赞 · 0采集
  • 慕尼黑3126792 2019-05-27
    字符串转换 字符串和整型 strconv.Itoa() 输入一个整型,输出一个字符串 strconv.Atoi() 输入一个字符串,输出一个整型 如果输入的是 “7x11” 会报错
    截图
    0赞 · 0采集
  • 积雪草1 2019-04-28
    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)
    }


    1赞 · 0采集
  • 慕圣4082440 2018-05-19

    栗子吱吱吱吱https://img1.mukewang.com/5affca9c00018c5107880592.jpg

    0赞 · 0采集
  • felix_yujing 2018-04-15

    拷贝文件:从src读,写到dst

    截图
    0赞 · 0采集
  • felix_yujing 2018-04-15

    NArg 命令行参数数量的检查

    截图
    0赞 · 0采集
  • felix_yujing 2018-04-14

    获取节点属性

    截图
    0赞 · 0采集
  • felix_yujing 2018-04-14

    获取节点

    截图
    0赞 · 0采集
  • felix_yujing 2018-04-11

    字符串转换与格式化

    截图
    0赞 · 0采集
  • felix_yujing 2018-04-11

    整型和字符串转换

    截图
    0赞 · 0采集
  • felix_yujing 2018-04-11

    判断前缀和后缀是否存在

    截图
    0赞 · 0采集
数据加载中...
开始学习 免费