package main
import (
"fmt"
"os"
"path/filepath"
"regexp"
)
func main() {
// 命令行参数
args := os.Args
// 检查参数
if len(args) == 1 {
fmt.Println("ff is a file find tool. use like bottom")
fmt.Println("ff [dir] [regexp]")
return
}
if len(args) <3 {
fmt.Println("args <3")
return
}
fileName := args[1]
pattern := args[2]
file, err := os.Open(fileName)
if err != nil {
fmt.Println(err)
return
}
fi, err := file.Stat()
if err != nil {
fmt.Println(err)
return
}
if !fi.IsDir() {
fmt.Println(fileName, " is not a dir")
}
reg, err := regexp.Compile(pattern)
if err != nil {
fmt.Println(err)
return
}
// 遍历目录
filepath.Walk(fileName,
func(path string, f os.FileInfo, err error) error {
if err != nil {
fmt.Println(err)
return err
}
if f.IsDir() {
return nil
}
// 匹配目录
matched := reg.MatchString(f.Name())
if matched {
fmt.Println(path)
}
return nil
})
}
https://oktools.net/regex
https://github.com/cdoco/common-regex
https://blog.csdn.net/zfy1355/article/details/52959803
运算符用于在程序运行时执行数学或逻辑运算。
1.算术运算符
Go 语言的算术运算符如图,假设A值为10,B值为20。
2.关系运算符
Go 语言的关系运算符如图,假设A值为10,B值为20。
3.逻辑运算符
Go 语言的逻辑运算符如图。假定A值为True,B值为False。
4.位运算符
位运算符对整数在内存中的二进制位进行操作。
位运算符比一般的算术运算符速度要快,而且可以实现一些算术运算符不能实现的功能。如果要开发高效率程序,位运算符是必不可少的。
Go 语言的位运算符如图。假定 A = 60,B = 13,其二进制数转换如下。
A = 0011 1100
B = 0000 1101
5.赋值运算符
Go 语言的赋值运算符如图。
6.其他运算符
Go 语言的其他运算符如图。
运算符的优先级
所谓优先级,就是当多个运算符出现在同一个表达式中时,先执行哪个运算符。