Go 语言教程实战

安装在线教程 由于墙,golang.org 国内无法访问,其在线教程也一样 tutorial.golang.org http://go-tour-zh.appspot.com/ 可以在本机运行, 先安装Go 编译器 http://code.google.com/p/go/downloads/list 然后安装教程 go get code.google.com/p/go-tour/gotour 或者中文的 go get bitbucket.org/mikespook/go-tour-zh/goto...阅读全文

CSDN博客 2012-12-09 14:49 mebusw

我为什么放弃Go语言

转自:http://blog.csdn.net/liigo 有好几次,当我想起来的时候,总是会问自己:我为什么要放弃Go语言?这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题。 开门见山地说,我当初放弃Go语言(golang),就是因为两个“不爽”:第一,对Go语言本身不爽;第二,对Go语言社区里的某些人不爽。毫无疑问,这是非常主观的结论。但是我有足够详实的客观的论据,支撑这个看似主观的结论。 第0节:我的Go语言经历 先说说我的经历吧,以避免被无缘无故地当作Go语言的低级黑。...阅读全文

CSDN博客 2014-04-21 21:54 u012860063

初读谷歌自家的语言之作------Go语言和Dart语言

Go语言是一个新语言,截至目前为止,第一版正式版还没有发布。Go语言的设计者是Robert Griesemer, Rob Pike和Ken Thompson,当年设计C和Unix,后来的Plan9团队中的人 。Go语言的设计理念很明确,就是将动态类型语言的编程容易度和静态类型语言的安全效率结合起来。深入了解Go语言的发展历史以及完整的目标,请参考Go语言 FAQ。 Go语言有很浓厚的C的遗风,尽量屏蔽C++和Java的影响,比如没有独立的OO体系(并不是说不能OO),一切以struct为中心,没...阅读全文

CSDN博客 2013-11-28 10:12 a4614181

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类...阅读全文

CSDN博客 2014-03-25 21:55 yangzhengyi68

Go语言并发之美

EMC中国研究院 颜开 简介 多核处理器越来越普及,那有没有一种简单的办法,能够让我们写的软件释放多核的威力?答案是:Yes。随着Golang, Erlang, Scale等为并发设计的程序语言的兴起,新的并发模式逐渐清晰。正如过程式编程和面向对象一样,一个好的编程模式需要有一个极其简洁的内核,还有在此之上丰富的外延,可以解决现实世界中各种各样的问题。本文以GO语言为例,解释其中内核、外延。 并发模式之内核 这种并发模式的内核只需要协程和通道就够了。其中协程负责执行代码,通道负责在协程之间传递事...阅读全文

CSDN博客 2014-01-10 17:28 kjfcpua

Go的List操作上的一个小“坑”

一直想不清楚一个问题,简单设计的东西到底是“坑多”还是“坑少”呢? 复杂的设计,考虑的太全面,使用起来更麻烦,使用者容易陷入乱,落入自身的陷阱;而简单的设计呢,在许多方面上又顾及不周,如果使用者对其“设计”没仔细研究,或者其实现本身又是一个黑盒子,也容易掉入到设计本身遗留下来的“陷阱”。下面是我刚开始使用Go写代码时碰到的一个小“坑”,这个“坑”的原因我归结为后者。 这个“小坑”来自于go的container/list package的使用上。导致“坑”的代码大概如下所示: 1 2 3 4 5 ...阅读全文

CSDN博客 2014-01-21 17:34 kjfcpua

golang基础知识

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 今天说一些golang的基础知识,还有你们学习会遇到的问题,先讲解hello word [php] package main import "fmt" func main() { fmt.Println("你好,微度网络"); } [/php] package name 包机制,每一个独立的go程序都需要有一个package main的申明,主要是要为下边入口函数main()做申明的,import...阅读全文

Golang学习(8)——io 包

Golang学习 - io 包--------------------先说一下接口,Go 语言中的接口很简单,在 Go 语言的 io 包中有这样一个函数:func ReadFull(r Reader, buf []byte) (n int, err error)这个函数可以把对象 r 中的数据读出来,然后存入一个缓冲区 buf 中,以便其它代码可以处理 buf 中的数据。这里有个问题,ReadFull 函数究竟可以读取哪些对象的数据?可以读文件中的数据吗?可以读网络中的数据吗?可以读数据库中的数...阅读全文

51CTO博客 2016-11-25 16:44:27 1160636144

Plan 9安装Go

I、安装python和mercurial(hg) 首先是在term中输入9fs sources, 然后cd到/n/sources/contrib下,参照Plan 9的contrib index,找到"From fgb's contrib"的python用户名。 % 9fs sources % /n/sources/contrib/fgb/root/rc/bin/contrib/install fgb/contrib % contrib/install -f bichued/python % co...阅读全文

CSDN博客 2011-02-21 22:24 bonny95

剖析Go1.3新特性:sync.Pool

Go 1.3 的sync包中加入一个新特性:Pool。官方文档可以看这里http://golang.org/pkg/sync/#Pool 这个类设计的目的是用来保存和复用临时对象,以减少内存分配,降低CG压力。 type Pool func (p *Pool) Get() interface{} func (p *Pool) Put(x interface{}) New func() interface{} Get返回Pool中的任意一个对象。如果Pool为空,则调用New返回一个新创建的对象。...阅读全文

CSDN博客 2014-08-06 17:33 tiaotiaoyly

Golang学习(7)——sync包

Golang学习 - sync 包--------------------临时对象池 Pool 用于存储临时对象,它将使用完毕的对象存入对象池中,在需要的时候取出来重复使用,目的是为了避免重复创建相同的对象造成 GC 负担过重。其中存放的临时对象随时可能被 GC 回收掉(如果该对象不再被其它变量引用)。   从 Pool 中取出对象时,如果 Pool 中没有对象,将返回 nil,但是如果给 Pool.New 字段指定了一个函数的话,Pool 将使用该函数创建一个新对象返回。Pool 可以安全的在...阅读全文

51CTO博客 2016-11-25 16:08:45 1160636144

Golang学习(6)——sort包

Golang学习 - sort 包--------------------// 满足 Interface 接口的类型可以被本包的函数进行排序。type Interface interface { // Len 方法返回集合中的元素个数 Len() int // Less 方法报告索引 i 的元素是否比索引 j 的元素小 Less(i, j int) bool // Swap 方法交换索引 i 和 j 的两个元素的位置 Swap(i, j int)}// 对 data 进行排序(不保证相等元素的相...阅读全文

51CTO博客 2016-11-25 15:55:30 1160636144

在windows下配置GO编译环境

1、下载安装包 大家可以从Go lang主页上找到各个平台下的安装方法: 主页:http://golang.org/# 安装文档:http://golang.org/doc/install Go source: http://code.google.com/p/go/ windows 下载包:http://code.google.com/p/go/downloads/list?q=OpSys-Windows+Type%3DInstaller 我自己下载的是msi包,这个不要设置环境变量,安装完成...阅读全文

CSDN博客 2012-07-03 12:35 shlpyy

Go是如何用组合实现继承的

Go提供了很赞的并发支持,但是Go并不支持完全的面向对象。这并不代表Go不支持面向对象,而且Go的OO系统做的非常轻量,学习成本压到了最小。尽管为了做到这种轻量级的面向对象让Go失去了一些OO的方便特性,但是更高的效率和多返回值多少弥补了这一点。 那些完全支持面向对象的语言一般都具有继承的功能。继承有很棒的优点,最简单了讲,就是可以少写代码。当然,继承并不仅仅是让你省了敲几下键盘的功夫,它还能更好的抽象程序中各种类型之间的关系。 Go的OO系统不支持继承,但是可以使用Go中一种叫做"组合"的方法...阅读全文

CSDN博客 2014-07-22 15:57 gophers

进一步认识golang中的并发

如果你成天与编程为伍,那么并发这个名词对你而言一定特别耳熟。需要并发的场景太多了,例如一个聊天程序,如果你想让这个聊天程序能够同时接收信息和发送信息,就一定会用到并发,无论那是什么样的并发。 并发的意义就是:让一个程序同时做多件事情! 理解这一点非常重要,是的,并发的目的只是为了能让程序同时做另一件事情而已,并发的目的并不是让程序运行的更快(如果是多核处理器,而且任务可以分成相互独立的部分,那么并发确实可以让事情解决的更快)。记得我学C++那时候开始接触并发,还以为每开一个线程程序就会加速一倍呢...阅读全文

CSDN博客 2014-04-28 22:24 gophers

Golang学习(5)——strconv包

Golang学习 - strconv 包--------------------// 将布尔值转换为字符串 true 或 falsefunc FormatBool(b bool) string// 将字符串转换为布尔值// 它接受真值:1, t, T, TRUE, true, True// 它接受假值:0, f, F, FALSE, false, False// 其它任何值都返回一个错误。func ParseBool(str string) (bool, error)--------------...阅读全文

51CTO博客 2016-11-25 14:31:19 1160636144

Golang中如何模拟C语言中的if(scanf(…)==EOF)来控制输入的终止

相信很多从C/C++转到Golang的朋友们都经常会对Go中的输入控制感到头疼。。。尤其是如果要在Go中模拟C语言中的如下代码会遇到不小困惑: char input[100]; while (1) { if (scanf("%s", input) == EOF) { printf("输入结束\n"); break; } } 上面这段代码在控制台中输入一个Ctrl+Z(EOF) 就可以终止输入了: C语言中的 int scanf() 函数返回的是一个int类型,它的值只有三种情况: (1) 如果一...阅读全文

CSDN博客 2014-03-06 22:30 gophers