go-tour练习解答

go-tour对于想学习golang的人来说是一个很好的教程。 首先go-tour是有web版本,但是需要FQ。如果不能FQ的,也可以在google code上自己下载go-tour源码,go build,run一下,在自己的机器上就可以跑这个教程了。 提醒下,如果是后者,这篇文章中的程序对应的import包就需要进行相应修改了。 下面给出我的go-tour中的Exercise的解答(在web上已经测试通过) Exercise: Loops and Functions 第一个循环10次: pa...阅读全文

博客园 2014-10-04 19:26:17 yjf512

给go添加各种package

go version 1.1.2  For example you need to install the webscoket pakeage   try           go get code.google.com/p/go.net/websocket  catch          $GOPATH no set?                that you need set the GOPATH in the system environment variables and this...阅读全文

博客园 2013-09-26 12:57 x-radish

ssdb的golang驱动的同步问题

如果数据库连接只有一个,在某个时间点(指的是某个及其短的时间内),多个读写的话,会出问题,修改了下,加了个mutex,算是解决了此问题,贴下备忘 var mutex sync.Mutex func (c *Client) Do(args ...interface{}) ([]string, error) { var resp []string var err error mutex.Lock() err = c.send(args) resp, er...阅读全文

博客园 2014-07-18 22:07 ziyouchutuwenwu

go语言编译记录

$ 6g mypak.go               #先编译自定义包,生成mypak.6     $ 6g test.go                # 然后编译,生成test.6     $ 6l -o go_test test.6      # 链接生成新文件名 go_test     $ go_test     hello, world 如在程序中有自定义包(如本例test.go中引用了mypak包),则需要使用 import("./mypak"),其中 ./ 告诉编译器(comp...阅读全文

ITEYE博客 2012-12-17 15:38 zdrqq

深入学习golang(4)—new与make

Go语言中的内建函数new和make是两个用于内存分配的原语(allocation primitives)。对于初学者,这两者的区别也挺容易让人迷糊的。简单的说,new只分配内存,make用于slice,map,和channel的初始化。   1. new 这是一个用来分配内存的内建函数,但是与C++不一样的是,它并不初始化内存,只是将其置零。也就是说,new(T)会为T类型的新项目,分配被置零的存储,并且返回它的地址,一个类型为*T的值。在Go的术语中,其返回一个指向新分配的类型为T的指针,这...阅读全文

博客园 2014-10-03 12:54 hustcat

golang源码解读之map

golang的map实现并不是像c++一样使用红黑树,而是使用了hashmap,用数组来实现。 详细的实现后续补充,这里先做个备忘。 在iterate整个map的时候,使用delete是安全的。这跟c++是不一样的,c++在delete的时候,会导致整棵树发生变化,所以不能在迭代的时候删除元素。 那为什么golang的map是安全的呢,从源码来看,golang的map使用了桶的概念,元素是被hash到桶存储,每个桶预设是存储八个kv,而且在头部有一个uint8 tophash[8]的结构,存储每...阅读全文

博客园 2014-09-16 16:42 weijiaen

go学习笔记-控制流

控制语句 条件语句 条件语句不需要使用括号将条件包含起来(); 无论语句体内有几条语句,花括号{}都是必须存在的; 左花括号{必须与if或者else处于同一行; 在if之后,条件语句之前,可以添加变量初始化语句,使用;间隔; 在有返回值的函数中,不允许将“最终的”return语句包含在if…else…结构中,否则会编译失败: func example(x int) int{ var result int if x == 0 { result = 5 ...阅读全文

开源中国博客 2014-03-19 20:15 Bluven

go语言测试test

Go语言通过testing包提供自动化测试功能。包内测试只要运行命令 go test,就能自动运行符合规则的测试函数。Go语言测试约定规则1.一般测试func TestXxx(*testing.T)测试行必须Test开头,Xxx为字符串,第一个X必须大写的[A-Z]的字幕为了测试方法和被测试方法的可读性,一般Xxx为被测试方法的函数名。 2.性能测试func BenchmarkXxx(*testing.B)性能测试用Benchmark标记,Xxx同上。 3.测试文件名约定go语言测试文件名约定规...阅读全文

ITEYE博客 2013-03-15 15:41 lavafree

golang channel初次接触

goroutine之间的同步 goroutine是golang中在语言级别实现的轻量级线程,仅仅利用go就能立刻起一个新线程。多线程会引入线程之间的同步问题,经典的同步问题如生产者-消费者问题,在c,java级别需要使用锁、信号量进行共享资源的互斥使用和多线程之间的时序控制,而在golang中有channel作为同步的工具。 1. channel实现两个goroutine之间的通信 package main import "strconv" import "fmt" func main() ...阅读全文

博客园 2014-09-04 00:14 pier2