摘要: 首先很抱歉,由于搬家,最近太多事情要处理,导致文章更新比较慢。这篇文章,我们讲Go中的异常处理。Go提供了两个内置函数 panic()和recover()用于异常处理。Go中,对异常处理的整体原则是:多用errors包,少用panic。对于可预见的错误,比如网络连接失败等,一般都使用errors,只... 阅读全文
posted @ 2015-08-30 15:32 klain 阅读(4285) 评论(0) 推荐(0) 编辑
摘要: Go内建函数copy:func copy(dst, src []Type) int用于将源slice的数据(第二个参数),复制到目标slice(第一个参数)。返回值为拷贝了的数据个数,是len(dst)和len(src)中的最小值。看代码:package main import ("fmt") fu... 阅读全文
posted @ 2015-08-30 15:30 klain 阅读(9231) 评论(0) 推荐(0) 编辑
摘要: func cap(v Type) int返回指定类型的容量,根据不同类型,返回意义不同。数组: 元素个数 (和len(v)一样).数组指针: *v的元素个数 (和len(v)一样).Slice: the maximum length the slice can reach when resliced... 阅读全文
posted @ 2015-08-30 15:28 klain 阅读(4843) 评论(0) 推荐(0) 编辑
摘要: Go iota是一个比较奇怪的存在,它只能用在const的申明中,是一个从0开始的行数索引器。看代码package mainimport ( "fmt")const ( i = iota j = iota k l)func main() { fmt.Println... 阅读全文
posted @ 2015-06-04 05:42 klain 阅读(4361) 评论(0) 推荐(0) 编辑
摘要: Go builtin包提供了go预先声明的函数、变量等的文档。这些函数变量等的实现其实并不是在builtin包里,只是为了方便文档组织。这些内置的变量、函数、类型无需引入包即可使用。默认提供的有:1、常量:true,false,iota关于iota,请参考周一的文章“go iota用法”2、变量ni... 阅读全文
posted @ 2015-06-04 05:39 klain 阅读(1224) 评论(0) 推荐(0) 编辑
摘要: Go math/rand包用于生成随机数。代码:package mainimport "fmt"import "math/rand"func main() { fmt.Println(rand.Intn(100)) //产生0-100的随机整数 fmt.Println(rand.Floa... 阅读全文
posted @ 2015-06-01 21:47 klain 阅读(19280) 评论(0) 推荐(0) 编辑
摘要: Go中channel可以是只读、只写、同时可读写的。//定义只读的channelread_only := make (<-chan int)//定义只写的channelwrite_only := make (chan<- int)//可同时读写read_write := make (chan int... 阅读全文
posted @ 2015-06-01 21:46 klain 阅读(16301) 评论(0) 推荐(0) 编辑
摘要: Go net/http/pprof包提供了一个在WEB项目中使用的性能监控的工具,使用时只需要引用包:_"net/http/pprof"然后就可以在浏览器中访问地址:http://localhost:port/debug/pprof/来查看性能信息。最简单的示例:package mainimport... 阅读全文
posted @ 2015-06-01 21:45 klain 阅读(714) 评论(0) 推荐(0) 编辑
摘要: Go提供的os/exec包可以执行外部程序,比如调用系统命令等。最简单的代码,调用pwd命令显示程序当前所在目录:package mainimport ( "fmt" "os/exec")func main() { pwdCmd := exec.Command("pwd") ... 阅读全文
posted @ 2015-06-01 21:44 klain 阅读(4160) 评论(0) 推荐(0) 编辑
摘要: Go中通过os/signals包,可以接受系统信号。package mainimport "fmt"import "os"import "os/signal"import "syscall"func main() { sigs := make(chan os.Signal, 1) sig... 阅读全文
posted @ 2015-06-01 21:43 klain 阅读(659) 评论(0) 推荐(0) 编辑