在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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]) 执行程序所在的绝对路径: (使用下面一套方法) file, _ := exec.LookPath(os.Args[0]) log.Println("file:", file) dir,_ := path.Split(file) log.Println("dir:", dir) os.Chdir(dir) wd, _ := os.Getwd() log.Println("wd:", wd) 比如这个程序 package main import( "os" "log" "os/exec" "path" ) func main() { file, _ := os.Getwd() log.Println("current path:", file) file, _ = exec.LookPath(os.Args[0]) log.Println("exec path:", file) dir,_ := path.Split(file) log.Println("exec folder relative path:", dir) os.Chdir(dir) wd, _ := os.Getwd() log.Println("exec folder absolute path:", wd) } 可执行文件我放在/home/yejianfeng/handcode/test 我执行的路径是/home/yejianfeng/ 返回结果: [yejianfeng@openstack ~]$ handcode/test 2013/02/06 11:09:07 current path: /home/yejianfeng 2013/02/06 11:09:07 exec path: handcode/test 2013/02/06 11:09:07 exec folder relative path: handcode/ 2013/02/06 11:09:07 exec folder absolute path: /home/yejianfeng/handcode 从文件中json解析尽量使用os.OpenFile直接获取reader,然后再从reader中使用Decoder来解析json 比如 package main import ( "fmt" "encoding/json" "os") func main() { pathToFile := "jsondata.txt" file, err := os.OpenFile(pathToFile, os.O_RDONLY, 0644) if err != nil { fmt.Println(err) os.Exit(1) } configs := make(map[string]map[string][]Service, 0) err = json.NewDecoder(file).Decode(&configs) if err != nil { fmt.Println(err) os.Exit(1) }} 别使用 content, err := ioutil.ReadFile(filepath) if err != nil { return nil, err } configs := make(map[string]map[string][]Service, 0) err = json.Unmarshal(content, configs) if err != nil { return nil, err } |
请发表评论