Go语言设计模式实践:组合(Composite)
关于本系列 这个系列首先是关于Go语言实践的。在项目中实际使用Go语言也有段时间了,一个体会就是不论是官方文档、图书还是网络资料,关于Go语言惯用法(idiom)的介绍都比较少,基本只能靠看标准库源代码自己琢磨,所以我特别想在这方面有一些收集和总结。 然后这个系列也是关于设计模式的。虽然Go语言不是一门面向对象编程语言,但是很多面向对象设计模式所要解决的问题是在程序设计中客观存在的。不管用什么语言,总是要面对和解决这些问题的,只是解决的思路和途径会有所不同。所以我想就以经典的设计模式作为切入点来...阅读全文
A Tour of Go - Exercise: Equivalent Binary Trees
A Tour of Go Exercise: Equivalent Binary Trees There can be many different binary trees with the same sequence of values stored at the leaves. For example, here are two binary trees storing the sequence 1, 1, 2, 3, 5, 8, 13. A function to check wheth...阅读全文
第一回 ,如何写 go 代码
GOPATH 和 workspace go语言的核心原则是保持简单,在项目构造 方面,源代码 和 和 构建脚本是 放在一起的,结构是固定的,就像maven那样。 先在path后多加一个 go(下载解压后的go包)的bin,使你可以自由使用go的命令 GOPATH 的系统环境变量,和ava_home 对于 java 不一样,目的是为了让go的命令和其它相关工具找到go的workspace GOPATH d:\home\user\ext;d:\home\user\mygo 可以有多个,分号分开。un...阅读全文
Golang 学习及使用
Golang 学习及使用 @Author : Xuan Jun (idxuanjun@qq.com)@Link : http://blog.csdn.net/idxuanjun@Date : 2013-11-23@Version : 0.0.2@Desc : Golang 学习及使用 1. Golang 使用点滴 1.1. mymysql调用提示错误 在日常工作中,应用程序不使用数据库的是越来越少了,学习用,也就不考虑太多了,直接MySQL的上手,Go语言MySQL数据库驱动选择的mymysql...阅读全文
Go语言设计模式实践:迭代器(Iterator)
关于本系列 决定开个新坑。 这个系列首先是关于Go语言实践的。在项目中实际使用Go语言也有段时间了,一个体会就是不论是官方文档、图书还是网络资料,关于Go语言惯用法(idiom)的介绍都比较少,基本只能靠看标准库源代码自己琢磨,所以我特别想在这方面有一些收集和总结。 然后这个系列也是关于设计模式的。虽然Go语言不是一门面向对象编程语言,但是很多面向对象设计模式所要解决的问题是在程序设计中客观存在的。不管用什么语言,总是要面对和解决这些问题的,只是解决的思路和途径会有所不同。所以我想就以经典的设计...阅读全文
Go语言设计模式实践:组合(Composite)
关于本系列 这个系列首先是关于Go语言实践的。在项目中实际使用Go语言也有段时间了,一个体会就是不论是官方文档、图书还是网络资料,关于Go语言惯用法(idiom)的介绍都比较少,基本只能靠看标准库源代码自己琢磨,所以我特别想在这方面有一些收集和总结。 然后这个系列也是关于设计模式的。虽然Go语言不是一门面向对象编程语言,但是很多面向对象设计模式所要解决的问题是在程序设计中客观存在的。不管用什么语言,总是要面对和解决这些问题的,只是解决的思路和途径会有所不同。所以我想就以经典的设计模式作为切入点来...阅读全文
Go实例学:break 和 continue
利用break 可以提前退出循环,break 终止当前的循环;也可以定义标签,break指定的循环体。 break的用法示例1: package main import ( "fmt" ) func main() { for i := 0; i < 10; i++ { if i > 5 { break //终止这个循环,只打印0到5 } fmt.Println(i) } } 输出结果 0 1 2 3 4 5 break的用法示例2: 循环嵌套循环时,可以在break 后指定标签。用标签决定哪个循...阅读全文
Go实例学:内建函数
Go预定义了少数函数,这意味着无需引用任何包就可以使用它们。下面列出了所有的内建函数(截至go1.1): close new panic complex delete make recover real len append print imag cap copy println 备注:可以使用godoc builtin命令获得关于内建类型和函数的在线文档。 close 用于channel 通讯。使用它来关闭channel。 delete 用于在map 中删除实例。 len 和cap 可用于不同...阅读全文
Effective Go
转自:https://golang.org/doc/effective_go.html Effective Go IntroductionExamplesFormattingCommentaryNamesPackage namesGettersInterface namesMixedCapsSemicolonsControl structuresIfRedeclaration and reassignmentForSwitchType switchFunctionsMultiple return...阅读全文
关于编程语言学习的一些体会
关于编程语言学习的一些体会 十 22 bigwhite技术志 Blog, Blogger, C, Common-Lisp, Cpp, Erlang, Go, Golang, Google, Haskell, Java, Kernel, Linux, monad, PHP, Programmer, Prolog, Python, Ruby, Scala, 七龙珠, 博客, 学习, 工作, 开源, 思考, 感悟, 程序员, 范型 2 Comments Learn at least one new l...阅读全文
Go defer的C实现
Go defer的C实现 二 03 bigwhite技术志 Blog, Blogger, C, defer, GCC, GNU, Go, Golang, Linux, Opensource, Programmer, Ubuntu, 博客, 开源, 思考, 程序员, 编译器 1 Comment Go语言中引入了一个新的关键字defer,个人认为这个语法关键字让异常处理也变得得心应手许多,对改善代码的可读性和可维护性大有裨益,是典型的语法棒棒糖^_^。 像下面这种代码(伪代码): void foo(...阅读全文
辩证地看待“重新发明轮子”
辩证地看待“重新发明轮子” 十一 02 bigwhite技术志 Android, Apache, Blog, Blogger, C, Chrome, Cpp, CVS, Firefox, Git, Go, Golang, IE, iOS, iPod, leveldb, Mercurial, nginx, Programmer, redis, Ruby, Subversion, symbian, 博客, 思考, 感悟, 程序员, 重新发明轮子 1 Comment C程序员骨子里都有一种“重新发明轮...阅读全文
也谈Go语言代码包分发
也谈Go语言代码包分发 十 25 bigwhite技术志 bitbucket, Blog, Blogger, Git, github, Go, Golang, Google, launchpad, Opensource, Programmer, svn, 博客, 开源, 版本控制, 程序员 1 Comment Go语言目前(截至1.0.2版本)尚不支持直接链接.a文件(这里的.a文件指的不是传统静态共享库,而是对golang的非main包build后的产物)。这样一来Go的第三方库包或组织内部的...阅读全文
也谈Go语言声明语法
也谈Go语言声明语法 十 11 bigwhite技术志 Blog, Blogger, C, Go, Golang, Google, Programmer, 声明, 开源, 程序员 No Comments 一直在从事C语言服务端应用开发,对C的变量声明语法早已烂熟于胸,同时也深知复杂的C变量声明十分晦涩难解。记得若干年前还特意花了一些时间研究理解复 杂C变量声明的方法,记忆中这些方法包括:《C专家编程》中提到的“优先级”规则、right-left规则以及顺时针/螺旋形规则等,幸运地是我们日常 开发...阅读全文
Go与C语言的互操作
Go与C语言的互操作 九 26 bigwhite技术志 Blog, Blogger, C, Cgo, enum, GCC, Go, Golang, Google, interoperability, Linux, Opensource, Programmer, Slice, struct, union, 互操作, 共享库, 开源, 思考, 数组, 枚举, 汇编, 程序员, 结构体, 编译器, 联合体, 链接 5 Comments Go有强烈的C背景,除了语法具有继承性外,其设计者以及其设计目标都...阅读全文
Go vs Erlang
Go vs Erlang因为 云巴 系统对高并发、低延迟的需求,我们对各个语言、平台做了很多的调研比较工作。这自然就包括致力于开发高并发应用的 Go 和 Erlang。并发Go 对高并发的支持通过 goroutine 实现。goroutine 可以理解为轻量级的 线程(thread)。同一个 Go 应用创建的 goroutine 共享地址空间。Erlang 的高并发通过轻量级 进程(process)实现,每一个进程都有独立的状态记录。另外,使用 goroutine 要注意,goroutine 运...阅读全文
go第三方库的安装例子
go第三方库的安装 设置环境变量GOPATH=c:\go\code 在c:\go\code下创建源代码目录src 进入c:\go\code\src 装第三方库命令 git clone git://github.com/alphazero/Go-Redis.git redis 可以在任意目录执行安装redis go install redis 安装后再c:\go\code目录下生成一个pkg目录并且在目录下生成redis.a 可以在在c:\go\code\src下生成目录文件xn 结构如下 文件内...阅读全文
Emacs for Go
In this post I'm going to explore customizing Emacs to make hacking on Go a little more fluid. This is a living document and will probably be updated as I discover new modes and tools. The Emacs modes I currently use are: go-mode, oracle, goflymake, ...阅读全文