为了账号安全,请及时绑定邮箱和手机立即绑定
  • 如何在平行结构里处理树形结构的数据

    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 采集 收起 来源:获取指定节点

    2021-07-13

  • 经验和建议

    • 字符串处理切勿造轮子

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

    • flag.Parse 记得调

    • 新需求尽量用 json


    查看全部
    0 采集 收起 来源:总结

    2020-07-25

  • 实战!

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

    • 模拟命令行拷贝文件


    查看全部
    0 采集 收起 来源:总结

    2020-07-25

  • 基础知识

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

    • XML 编码处理

    • 命令行解析


    查看全部
    0 采集 收起 来源:总结

    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)
    }


    查看全部
  • -f:强制执行

    -v:输出拷贝动作


    查看全部
    0 采集 收起 来源:案例说明

    2020-07-25

  • 命令行解析 GO

    查看全部
    0 采集 收起 来源:案例说明

    2020-07-25

  • 模拟 Linux 中的 CP 指令

    查看全部
    0 采集 收起 来源:案例说明

    2020-07-25

  • 模拟命令行拷贝

    查看全部
    0 采集 收起 来源:案例说明

    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 ""
    }


    查看全部
  • 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)
    }


    查看全部
  • // 基本数值转换
    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"))


    查看全部
  • 字符串基本操作

    查看全部
  • 实战

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

    • 模拟命令行拷贝文件


    查看全部
首页上一页1234下一页尾页

举报

0/150
提交
取消
课程须知
本课程适合想使用Golang进行文本处理, 编写各类小工具的同学. 如果你对Golang语言还不是很熟悉, 请先学习Golang语言的基础课程
老师告诉你能学到什么?
1、文本字符串操作 2、 XML编码处理 3、命令行解析 4、从VS工程文件获取文件列表 5、模拟命令行拷贝文件

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!