import包命名
import的包可以给它命名
import l4g "code.google.com/p/log4go"
testing的Error和Fatal的区别
Error : Log() + Fail() 即记录当前错误,记录为失败,但是继续执行
Fatal : Log() + FailNow() 即记录当前错误,记录为失败,不继续执行
path.Clean使用
path.Clean用于对路径
../../等进行过滤,在创建修改文件的时候需要使用到,否则会有漏洞
go list all 能列出所有的包
go build的时候的错误分析
如果出现:
warning: building out-of-date packages:
runtime/pprof
testing
regexp/syntax
regexp
installing these packages with 'go test -i' will speed future tests.
那么就是说明下面的包已经有修改过了,但是没有重新install
如果有标准的包过期,使用go install -a -v std来进行更新
如果是自定义的包过期,重新调用go install
linux下获取进程信息是使用/proc/pid/
判断当前用户是否是root用户
方法:
os.Geteuid() != 0
使Go程序更快的几个知识:
1 如果是自带垃圾回收的语言,你必须要考虑内存使用情况。
由于垃圾回收必然占用程序时间,所以占用内存必然越小越好。
2 分配内存代码需要注意。
它必然最终导致垃圾回收
3 go中[]byte和string的转化实际上是进行了一次内存复制,所以能不用转换的地方尽量不要转换
4 尽量使用自带的官方包。除非有测试支持你写的代码比官方的快,否则不要轻易使用自己的包来代替官方包。
可以使用go test -run=regexp file_test.go 来制定运行某个测试用例
如何获取go的各种路径:
1 执行用户当前所在路径:
os.Getwd()
2 执行程序所在路径:
执行程序文件相对路径:
file, _ := exec.LookPath(os.Args[0])
执行程序所在的绝对路径:
(使用下面一套方法)
1 2 3 4 5 6 7 |
|
比如这个程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
可执行文件我放在/home/yejianfeng/handcode/test
我执行的路径是/home/yejianfeng/
返回结果:
1 2 3 4 5 |
|
从文件中json解析
尽量使用os.OpenFile直接获取reader,然后再从reader中使用Decoder来解析json
比如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
别使用
1 2 3 4 5 6 7 8 9 10 |
|