GO语言(golang)切片slice

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 切片slice是引用类型 len()函数获取元素的个数 cap()获取数组的容量 1.申明方式 [php] (1)var a []int 与数组不同的是他不申明长度 (2)s2 := make([]int, 3, 10) //元素的类型,元素的数量,元素的容量 fmt.Println(len(s2), cap(s2)) 输出元素的数量和容量 [/php] 2.讲数组转换成切片 [php] a :=...阅读全文

[Go语言]一种用于网游服务器的支持多路复用的网络协议处理框架

简介: 本文描述了使用Go语言实现的、适应于Go语言并发模型的一种支持多路复用的网络协议处理框架,并提供了框架的代码实现。作者将这种框架用于网络游戏服务器中的协议处理,但也可用于其他领域。 应用背景: 在网络游戏服务器设计中,一般都会遇到协议多路复用的场景。比如登录服务器和玩家客户端之间有1:N的多个TCP连接;登录服务器和游戏服务器之间是1:1的TCP连接。玩家登录游戏的大致流程是这样的: 玩家连接登录服务器 登录服务器向数据库请求玩家数据 登录服务器获取到玩家数据,把玩家数据转发给游戏服务器...阅读全文

新浪博客 2013-03-20 17:03 stevewang

Go 1.4 Beta 1 发布

Go 1.4 Beta 1 发布,此版本是 Go 1.4 的 beta 版本,现已提供下载,反馈bug请前往这里。 此版本仅包括一个小的编程语言修改;对编译器做了重大修改,向后兼容 for-range loop 形式。此版本关键点在实现功能,改进垃圾收集器和为下个版本完整的收集器打好基础。 此版本还添加了新的工具,支持使用 go 命令生成构建时源代码。此版本支持 Android 和 Native Client(NaCl)的 ARM 处理器和 Plan 9 的 AMD64。 Go 1.4 最终版本...阅读全文

ITEYE资讯 2014年10月31日 mengyidan1988

go install

译者简介安装C语言工具安装Mercurial获取代码安装Go编写程序进一步学习更新go到新版本社区资源环境变量 译者 原文:http://golang.org/install.html 翻译:柴树杉 (chaishushan@gmail.com) 翻译:Bian Jiang (borderj@gmail.com) 简介 Go是一个开源项目,采用BSD授权协议。 该文档介绍如何获取Go源代码,如何编译,以及如何运行Go程序。 目前有两种方式使用Go语言。这里主要讲述如何使用Go专用的gc系列工具 ...阅读全文

Go_Json_Unmarshal_Marshal

Go按照RFC 4627的标准实现了一个json编解码的标准库 func Unmarshal(data []byte, v interface{}) error Unmarshal用于反序列化json的函数 根据data将数据反序列化到传入的对象中 仔细查看代码中的四种情况 1 将json反序列化成struct对象 2 将json反序列化到可以存储struct的slice中 3 将json 反序列化到map中 4 将json反序列化到slice中 package main import ( "e...阅读全文

CSDN博客 2014-08-31 21:55 u012807459

Go 编程语言入门教程

原文:http://golang.org 翻译:刘金雨 http://log4think.com/ 介绍 本文档是关于Go编程语言基础的一个介绍性的入门教程,偏向于熟悉C或C++的读者。本文并非一份语言的完整指南,如果需要的话,你应该去看看 “语言规范”(language specification)。当读完本教程之后,你可能会希望继续看看“Effective Go”,这份文 档更深入的挖掘如何使用Go语言。此外还有一份《三日入门》的教程可供参考: 第一日, 第二日, 第三日. 本文将会以一 系...阅读全文

CSDN博客 2013-12-12 17:47 u010469632

go语言:WaitGourp使用

在学习go语言时,用到了“sync”包中的WaitGourp结构,来达到控制任务的完成。 由于WaitGroup是结构,所有需要通过sync.WaitGroup{}来创建 很类似与 Shoper/JAVA并发库之倒记时锁存器CountDownLatch中的CountDownLatch类。 Add(),Done(),Wait()。其中Done()是Add(-1)的别名。简单的来说,使用Add()添加计数,Done()减掉一个计数,计数不为0, 阻塞Wait()的运行。 package main i...阅读全文

CSDN博客 2014-05-09 01:06 x369201170

Go语言设计模式实践:迭代器(Iterator)

关于本系列 决定开个新坑。 这个系列首先是关于Go语言实践的。在项目中实际使用Go语言也有段时间了,一个体会就是不论是官方文档、图书还是网络资料,关于Go语言惯用法(idiom)的介绍都比较少,基本只能靠看标准库源代码自己琢磨,所以我特别想在这方面有一些收集和总结。 然后这个系列也是关于设计模式的。虽然Go语言不是一门面向对象编程语言,但是很多面向对象设计模式所要解决的问题是在程序设计中客观存在的。不管用什么语言,总是要面对和解决这些问题的,只是解决的思路和途径会有所不同。所以我想就以经典的设计...阅读全文

博客园 2014-10-30 06:14 newgame

Go os包

package main import ( "fmt" "io/ioutil" "os" "reflect" "time" ) func main() { dir, _ := os.Getwd() fmt.Println("dir:", dir) err := os.Chdir("d:/project/test2") dir, _ = os.Getwd() fmt.Println("dir:", dir) //参数不区分大小写 //不存在环境变量就返回空字符串 len(path) = 0 pat...阅读全文

博客园 2014-10-30 15:15 yumuxu

[go语言]吐槽:怎么样实现支持并发访问的数据集合更好?

在go语言里,提倡用信道通讯的方式来替代显式的同步机制。但是我发现有的时候用信道通讯方式实现的似乎也不是很好(暂不考虑效率问题)。 假设有一个帐号的集合,需要在这个集合上实现一些操作,比如查找修改等。这个集合的操作必须是支持并发的。 如果用锁的方式(方案1)实现大概是这样: import "sync" type Info struct { age int } type AccountMap struct { accounts map[string]*Info mutex sync.Mutex }...阅读全文

新浪博客 2012-12-07 17:20 stevewang

[go语言]select多路选择的模拟实现

有时候有这样一种应用场景:需要等待多个事件到达,然后返回尽可能多的事件;如果没有事件到达就阻塞等待。例如服务器等待客户端建立连接,或者等待客户端数据等就有这种应用需求。 在go语言里,可以利用select原语和它的非阻塞(default)分支组合实现这个功能: // 从ch获取尽可能多的数据放到events里,并返回实际数量;如果没有数据就阻塞等待 func wait(ch chan int, events []int) int { count := 0 for count < len(even...阅读全文

新浪博客 2012-12-05 11:49 stevewang

[go语言]内存分配器性能测试

在C/C++里,自己动手实现内存分配器是很常见的事情,写过几年C/C++程序的人可能都做过这样的事情。这其中很重要的一个原因是C/C++不支持垃圾回收。但是既然go语言已经支持垃圾回收,还有必要自己去写一个内存分配器吗?我们做一个简单的测试看看结果怎么样。 测试平台: OS: ubuntu 12.04 x86_64 CPU: i5 2.27G MEMORY: 8G // ben1.go 自己实现内存分配器 package main type Pool struct { buf []byte } ...阅读全文

新浪博客 2012-12-03 14:31 stevewang

[go语言]避免过度重构

golang-nuts上有人提了一个问题[1],询问怎么样把减少两个类似数据结构和算法的重复代码。简而言之,有两个struct:QuickFindSet和QuickUnionSet,它们各有Count, IsConnected, Find, Union等方法。他发现这两个struct的一些函数的实现是一样的,因此他希望能消除这些重复代码。 // quick-find type QuickFindSet struct { numOfComponents uint items []uint } fu...阅读全文

新浪博客 2012-11-26 15:27 stevewang

GO语言学习之数组

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 1.申明一个数组 var a[2] int 或者 a:=[2]int{1,2} 2.数组索引 数组就是索引的来建立如下图 我们再来一个测试 3.go语言可以自动计算数组的长度,譬如你知道数组有几个可以如下申明 [php] a:=[…]int{1,2,3,45} [/php] 4.指针数组 [php] a:=[3]int{1,2,3} var p * [3]int = &a //这种是指针数组 我们...阅读全文

微度网络 2013-08-03 widuu

GO(golang)语言学习(1)

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 1.导入包,一个主函数中只有一个main函数,包含一个main包,主函数中我们要申明main的包! [php]package main func main(){ } [/php] 2.引入包文件,譬如我们使用的是fmt包,打印helloword用,golang有一个包可见性的定义,就譬如其他语言中的private 、protected这些声明。当手写字母是小写的就是包内可用,包外就不可以用了,手写...阅读全文

微度网络 2013-08-02 widuu

Go语言设计模式实践:迭代器(Iterator)

关于本系列 决定开个新坑。 这个系列首先是关于Go语言实践的。在项目中实际使用Go语言也有段时间了,一个体会就是不论是官方文档、图书还是网络资料,关于Go语言惯用法(idiom)的介绍都比较少,基本只能靠看标准库源代码自己琢磨,所以我特别想在这方面有一些收集和总结。 然后这个系列也是关于设计模式的。虽然Go语言不是一门面向对象编程语言,但是很多面向对象设计模式所要解决的问题是在程序设计中客观存在的。不管用什么语言,总是要面对和解决这些问题的,只是解决的思路和途径会有所不同。所以我想就以经典的设计...阅读全文

CSDN博客 2014-10-30 06:37 tsatianne955

Go和Python Web服务器性能对比

Go和Python Web服务器性能对比 2011-08-05 13:41 renwofei423 开源中国社区 我要评论(0) 字号:T | T 我通常使用Python来构建Web 应用。一年前,在兴趣的驱使下,我开始学习Go。我发现,有 http、mustache.go GoMySQL 包的 Go 可以是我用来工作的不错的工具组合。因此,我决定使用Go编写我的应用 AD:2013云计算架构师峰会精彩课程曝光 我通常使用Python来构建Web 应用。一年前,在兴趣的驱使下,我开始学习Go。 ...阅读全文

CSDN博客 2013-10-30 11:25 legend_x