摘要: 本文通过代码讲解如何实现一个线程池。代码(来自https://gobyexample.com/)及注释如下:package main import "fmt"import "time" //这个是工作线程,处理具体的业务逻辑,将jobs中的任务取出,处理后将处理结果放置在results中。func ... 阅读全文
posted @ 2015-03-03 09:11 klain 阅读(4301) 评论(0) 推荐(0) 编辑
摘要: Go是一门推崇软件工程理念的编程语言。Go的代码必须放在GOPATH目录下,它应该包含三个子目录:src:用于以代码包的形式组织并保存Go源码文件。应该分为三类:库源码文件、命令源码文件、测试源码文件。pkg:用于存放由go install命令构建安装后的代码包(库源码文件)的“.a"归档文件。与G... 阅读全文
posted @ 2015-03-03 09:08 klain 阅读(597) 评论(0) 推荐(0) 编辑
摘要: Go语言中函数可以返回多个值,这和其它编程语言有很大的不同。对于有其它语言编程经验的人来说,最大的障碍不是学习这个特性,而是很难想到去使用这个特性。简单如交换两个数值的例子:package main import "fmt" func swap(a int, b int) (int, int) {r... 阅读全文
posted @ 2015-03-03 09:07 klain 阅读(15419) 评论(0) 推荐(0) 编辑
摘要: Go语言函数中有三个点...表示为可变参数,可以接受任意个数的参数。示例代码:package main import "fmt" func Greeting(prefix string, who ...string) {fmt.Println(prefix)//接收到who是一个数组,可以用for遍... 阅读全文
posted @ 2015-03-03 09:06 klain 阅读(3951) 评论(0) 推荐(0) 编辑
摘要: 计时器用来定时执行任务,分享一段代码:package main import "time"import "fmt" func main() {//新建计时器,两秒以后触发,go触发计时器的方法比较特别,就是在计时器的channel中发送值timer1 := time.NewTimer(time.Se... 阅读全文
posted @ 2015-03-03 09:03 klain 阅读(6041) 评论(0) 推荐(0) 编辑
摘要: Go语言要求不同的类型之间必须做显示的转换。转化分为类型转换和接口转化。类型转换的思路是:X类型需要转换为Y类型,语法是T(x). 如果对于某些地方的优先级拿不准可以自己加()约束,变成(T)(X)。如:*Point(p) // 和 *(Point(p))一样(*Point)(p) // p 转换成... 阅读全文
posted @ 2015-03-03 09:02 klain 阅读(616) 评论(0) 推荐(0) 编辑
摘要: go语言中包(package)与java中的包(package)非常类似,都是组织代码的方式,而且都和磁盘上的目录结构存在对应关系。go语言中,包名一般为go代码所在的目录名,但是与java不同的是,go语言中包名只有一级,而在java中包名是以点分割的多级目录组合的。go语言中,引用包时需要以GO... 阅读全文
posted @ 2015-03-03 08:59 klain 阅读(8407) 评论(0) 推荐(0) 编辑
摘要: GOROOTGO语言安装的路径,如MAC下是/usr/local/go,类似于JAVA中的JAVA_HOME。GOPATHGOPATH表示代码包所在的地址,可以设置多个。假设:GOPATH=~/go1:~/go2,GOROOT=/usr/local/go,在代码中引用了包:github.com/bi... 阅读全文
posted @ 2015-03-03 08:53 klain 阅读(2370) 评论(0) 推荐(0) 编辑