golang作为Google的亲儿子,现在关注度也越来越高,据说Android以后也会用golang代替Java开发,因为谷歌被甲骨文告了,每年都赔款十几亿美金....

Go的优势特性在于并发性,提供了令人惊讶的并发基元,良好的语法,优秀的函数库和快速的编译器。即使是基础代码变得很大的时候,使用Go语言依然很轻松,因为它使构造简单的同时保证可靠,高效。

我们项目组的在线客服系统就是用Go语言开发的,在接触Go之后更觉得其创新之举确实很有魅力。

下面记录“够浪”的入门学习笔记大笑,环境配置自己也是在网上找了很多资料,弄了很久才弄好,所以记录一下也算一个经验吧。

1、系统:Linux (Ubuntu、CentOS...)

golangs是谷歌的大牛们在Linux下开发的编译型语言,在Linux下进行开发是最适合的,别再Windows下搞,浪费时间,编译代码很容易出问题,我是踩过坑的哭

2、go语言环境配置:下载go源码安装包,再配置路径环境

3、开发工具(编辑器) :Sublime Text 2 或Sublime Text 3

4、版本管理:git

我是在CentOS6.5下配置的环境,以这为例,步骤如下:

a.go安装配置,依次在终端下输入如下命令即可

       

wget -c http://www.golangtc.com/static/go/go1.3.linux-386.tar.gz   #下载32位Linux的够源码包
tar -zxvf  go1.1.linux-386.tar.gz      #下载文件后解压缩
cp -R go/ /usr/local/go      #移动到指定文件路径
vi /etc/profile      #配置环境变量
      在文件末尾加入:
      export GOROOT=/usr/local/go
      export GOBIN=$GOROOT/bin
      export GOPATH=/root/gocode      #该路径是放开发的工程项目的文件路径 ,不可与GOROOT一致,在该路径下建三个文件夹“src”、“pkg”、“bin”,自己开发的工程项目放在src下。
      export PATH=$PATH:$GOBIN:$GOPATH
      按“Esc”,再输入:qw           #命令保存退出
source /etc/profile    #使配置文件立刻生效
go env    #查看环境变量,有结果输出证明配置成功


b.安装配置sublime Text 2
网上下载对应版本的安装包;

安装gosublime插件;
打开配置Preference>packages Seetting>go Sublime>setting User
输入设置如下:
"env": {
      
   "PATH" : "/usr/local/go"
 },
c.安装git

yum install git

d.运行go项目工程的shell基本命令

go get 【开源库】      #下载go语言开源库 
go build  *.go         #在项目路径下编译所有go文件  
go build -o [文件名] *go  #编译所有go文件,生成指定的文件名的执行文件
./【文件名】     #运行编译后的执行文件 

直接给链接参考

Go社区:http://studygolang.com/

Go入门语法指南:http://tour.studygolang.com/welcome/1

基础语法不多说,看看go的创新特色

Goroutines & Channels

写并发的代码已经很困难了,写并发访问网络的代码就更加困难了。问题在于传统的线程不能很好得伸缩,而且线程一旦运行起 来,就会很难去控制。而Go语言的goroutine解决了这个问题。本质上, goroutines是个轻量级的并发机制,通过使用一种称为channels管道来进行线程间交互。它们都非常易于使用。

 

<span style="font-size:18px;">go func(x,y) //即可异步调用方法 func

</span>
<span style="font-size:18px;">channel 是一种有类型的管道
var ch chan int = make(chan int) //创建管道
ch < - 1 //将1 送入管道ch
v := < - ch //从ch接收,并赋给v</span>

变量语法(对比java、golang)

:=

golang 之 slice

数组不能改变大小,slice (切片)提供了更加便利的方式来操作数组,有点类似java里面的ArrayList。

[]T 是一个元素类型为 T 的 slice。 p := []int{2, 3, 5, 7, 11, 13}

t
make

向slice添加修改删除元素 a = append(a, 0, 1, 2)