Golang项目目录结构组织
其实golang的工程管理还是挺简单的,完全使用目录结构还有package名来推导工程结构和构建顺序。 当然,首先要说的是环境变量$GOPATH,项目构建全靠它。这么说吧,想要构建一个项目,就要将这个项目添加到$GOPATH中,多个项目用";"分隔。 Golang项目目录下一般有三个子目录: src存放源代码 pkg编译后生成的文件 bin编译后生成的可执行文件 我们重点要关注的其实就是src文件夹中的目录结构。 举个例子比啥都强,目录结构如下: <proj> |--<src> |--<a> |...阅读全文
走进 Google 的 Go 语言
摘要:本文整理自Google首席工程师Rob Pike的演讲Slide,主要讲述的了Go的部分设计原理和初衷,也有提到Go语言在Google内外的应用现状。但本文的目的更多的是关于软件工程而不是编程语言的设计,更准确地说是如何设计编程语言来帮助软件工程。 序言:关于Go Go语言是一个开源、并发、高效、简单、有趣(但对某些人来说可能很无聊)的编程语言,支 持垃圾回收(GC),具有很好的可伸缩性。Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson...阅读全文
Go中的make和new的区别
make用于内建类型(map、slice 和channel)的内存分配。new用于各种类型的内存分配。 内建函数new本质上说跟其它语言中的同名函数功能一样:new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值。用Go的术语说,它返回了一个指针,指向新分配的类型T的零值。有一点非常重要:new返回指针。 内建函数make(T, args)与new(T)有着不同的功能,make只能创建slice、map和channel,并且返回一个有初始值(非零)的T类型,而不是*T。...阅读全文
Go的异常处理 defer, panic, recover
Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱。因为开发者很容易滥用异常,甚至一个小小的错误都抛出一个异常。在Go语言中,使用多值返回来返回错误。不要用异常代替错误,更不要用来控制流程。在极个别的情况下,也就是说,遇到真正的异常的情况下(比如除数为0了)。才使用Go中引入的Exception处理:defer, panic, recover。 这几个异常的使用场景可以这么简...阅读全文
Go Programming Language
Google 今天发布了自制的变成语言,叫做Go,官方网站如下: http://golang.org/ 主要参与者名单繁星满天: Ken Thompson (Unix之父之一…好拗口) Rob Pike (Unix团队成员, 著书《 The Practice of Programming 》and《 The Unix Programming Environment》) 等等 Logo图标 (一只 Gopher, 金花鼠,作者 Renée French) 为什么Google要做自己的编程语言呢? ...阅读全文
从零开始学GO语言(1)——hellow world
我是一个前端工程师,近来老大发邮件让我们调研go语言,而我近来在等待联调,事儿不是很多,所以开始学习GO语言,和学习所有语言一样,第一个程序肯定是输出“hello world”。下面讲讲我的过程。 我的电脑的系统是ubuntu 12, 所以先安装GO语言的编译器,直接sudo apt-get install gccgo就好了。 然后新建文件 hello,参照网上事例,写如下代码: package main import fmt "fmt" func main(){ fmt.Printf("hel...阅读全文
Go中的函数一些有趣的功能
Go中的函数 函数是Go里面的核心设计,它通过关键字func来申明,他的格式如下func funcname(input1 type1, input2 type2) (output1 type1, output2 type2) { //这里是处理逻辑代码 //返回多个值 return value1, value2} 函数有以下特征: 关键字func用来申明一个函数funcname,匿名函数可以没有funcname。 函数可以有一个或者多个参数,每个参数后面带有类型,通过,分隔 函数可以返回多个值 ...阅读全文
Mac下Go语言环境的搭建
go语言运行包安装 下载地址: https://code.google.com/p/go/downloads/list 我下载的是:go1.0.3 Mac OS X (x86 64-bit) Signed PKG installer go1.0.3.darwin-amd64-signed.pkg 下载完成后直接安装。运行包自动安装在 /usr/local/go 中,这样在命令终端就可以运行go命令了。 这时候在命令行输入 go,会看到下面信息: cybercarematoMacBook-Pro:...阅读全文
GO语言中的面向对象与接口
GO语言为我们提供了轻量级的面向对象模式,但是不同于JAVA和C++,没有继承这个概念,甚至找不到构造(构析)函数的影子,相对于重量级的面向对象语言,GO语言的面向对象似乎更像硬是用C语言的指针来实现OO。 首先,介绍一下最基本的对象声明,和C语言极为类似: type object struct { some_var int other_var string } 里面的变量还可以用指针: type man struct { name string id int } var woman struc...阅读全文
Ready? Go! 下篇:多核并起
Google于2009年11月发布了Go编程语言,旨在同时具备C语言的效率和Python的简便。今年3月,Go开发组正式发布了Go语言的第一个稳定发行版:Go version 1,简称Go 1。这意味着Go语言本身和它的标准库已经稳定下来,开发者现在可以将其作为一个稳定的开发平台,构建自己的应用。我们用两篇文章介绍Go语言的特性和应用,本文是其中的第二篇。 并行和goroutine 然而,处理器技术的发展指出,比起[掩盖了各种并行结构的]单处理器,由多个类似的处理器(各自包含自己的存储单元)组成...阅读全文
Go, frameworks, and Ludditry
A topic that has weighed on my mind recently is the dichotomy of frameworks vs. libraries in the Go community. Is the prevailing stance against complex frameworks a rejection of this purported labour saving automation, or an enlightened position that...阅读全文
我为什么放弃Go语言
转自:http://blog.csdn.net/liigo 有好几次,当我想起来的时候,总是会问自己:我为什么要放弃Go语言?这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题。 开门见山地说,我当初放弃Go语言(golang),就是因为两个“不爽”:第一,对Go语言本身不爽;第二,对Go语言社区里的某些人不爽。毫无疑问,这是非常主观的结论。但是我有足够详实的客观的论据,支撑这个看似主观的结论。 第0节:我的Go语言经历 先说说我的经历吧,以避免被无缘无故地当作Go语言的低级黑。...阅读全文
Simple Web API Server in Golang (2)
In this challenge, I tried to implement a simple OAuth2 server basing on Simple Web API Server in [1]. For OAuth2, go to http://oauth.net/2/. Endpoint /api/2/domains/{domain name}/oauth/access_token Use port 80. We would like to use other ports such ...阅读全文
Simple Web API Server in Golang (1)
To be an better Gopher, get your hands dirty. Topcoder offered a serials of challenges for learning Golang. In this blog, I tried to implement "Go Learning Challenge - Simple Web-API Server"[1]. What's used in this challenge ? Following aspects and p...阅读全文
初读谷歌自家的语言之作------Go语言和Dart语言
Go语言是一个新语言,截至目前为止,第一版正式版还没有发布。Go语言的设计者是Robert Griesemer, Rob Pike和Ken Thompson,当年设计C和Unix,后来的Plan9团队中的人 。Go语言的设计理念很明确,就是将动态类型语言的编程容易度和静态类型语言的安全效率结合起来。深入了解Go语言的发展历史以及完整的目标,请参考Go语言 FAQ。 Go语言有很浓厚的C的遗风,尽量屏蔽C++和Java的影响,比如没有独立的OO体系(并不是说不能OO),一切以struct为中心,没...阅读全文
Go语言并发与并行学习笔记(三)
Go语言并发与并行学习笔记(三) Go语言并发的设计模式和应用场景 以下设计模式和应用场景来自Google IO上的关于Goroutine的PPT:https://talks.golang.org/2012/concurrency.slide 本文的示例代码在: https://github.com/hit9/Go-patterns-with-channel 生成器 在Python中我们可以使用yield关键字来让一个函数成为生成器,在Go中我们可以使用信道来制造生成器(一种lazy load类...阅读全文