使用go语言递归查找指定目录下的文件,根据正则匹配筛选出需要的文件,并且忽略指定的目录
成都创新互联专业为企业提供刚察网站建设、刚察做网站、刚察网站设计、刚察网站制作等企业网站建设、网页设计与制作、刚察企业网站模板建站服务,十载刚察做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
先使用 ioutil.ReadDir 遍历出指定目录下的文件,再递归进目录中遍历,问题的关键在于识别出文件为目录, fs.FileInfo 中有一个 IsDir() 函数可以识别是否是目录
正则匹配使用 regexp.MatchString ,regexp中有很多正则操作的工具,如根据正则替换字符串中的指定字符
可以简单理解为:
$GOPATH 是go的工程目录
/home/guest/gocode
├── bin
├── pkg
└── src
$GOROOT 是go的安装目录
/home/guest/tools/go
├── api
├── AUTHORS
├── bin
├── blog
├── CONTRIBUTING.md
├── CONTRIBUTORS
├── doc
├── favicon.ico
├── lib
├── LICENSE
├── misc
├── PATENTS
├── pkg
├── README.md
├── robots.txt
├── src
├── test
└── VERSION
go语言中main包是特殊的。一般的包名是.go文件的目录名,编译器会将同一目录下的不同.go文件视作同一个包。但是main包的目录不是main目录,所以问题出在你使用的包名上,如果想在main包中添加函数建议写在main函数所在的go文件中,最好的方法是创建另一个包,由main函数调用。
先看一下目录结构,注意这里的src名称是必须的,go在设置了GOPATH后,默认会添加src去寻找package,暂未查询是否有方法不按照src查询
根据上面的描述,Go语言中通过包中函数的名称来区分公共函数和私有函数,我们在main函数中是无法调用myPrivateFunc的
此时如果执行通过go run方式执行,会看到如下的提示信息,这与大部分语言对于包管理方式相关,所以我们通过两种不同的方法来让代码执行起来
返回如下,这里面对我们后续执行有影响的两个参数GO111MODULE和GOPATH
如果要使用gopath模式引用包,则需要关闭mod模式
设置GOPATH为当前路径,即main.go所在的路径
此时再查看go env时,GOPATH已经发生改变
我们再次尝试执行代码
可以看到public函数被调用
go语言 一个主package包引入同级目录下go文件包编译出错是设置错误造成的,解决方法为:
1、先使用import "strings"导入strings库。
2、HasPrefix 判断字符串 s 是否以 prefix 开头。
3、HasSuffix 判断字符串 s 是否以 suffix 结尾。
4、可以看看判断的代码。
5、在cmd下运行一下go run test.go,看看如下结果。
6、Contains 判断字符串 s 是否包含 substr,也就是判断一下S是否在strings中。
7、在cmd下运行go run test.go看看结果。