使用 golang 实现类似 pthread_barrier_t 语义的 barrier 对象

看到golang标准库sync package WaitGroup 类型, 本以为是golang 版本的 barrier 对象实现,看到文档给出的使用示例: var wg sync.WaitGroup var urls = []string{ "http://www.golang.org/", "http://www.google.com/", "http://www.somestupidname.com/", } for _, url := range urls { // Increment ...阅读全文

开源中国博客 2015-01-18 23:20 yujian0231

Go Web 编程 一书第52页中的错误: string 并非类似指针类型

<< Go Web 编程>> 一书 第 52 页说到: Go 语言中 string,slice,map 这三种类型的实现机制类似指针,所以可以直接传递, 而不用取地址后传递指针。 这个说法套在 string 上, 是错误的。 package main import "fmt" func add1(a string) string { a = a + " simida" return a } func main() { x := "I am Jon" fmt.Println("x = ", x) ...阅读全文

ITEYE博客 2015-01-18 kanglecjr

Go语言总结和学习指南

早在2009年11月google刚推出go语言的时候,在好奇心的驱使下,就下载体验过。那时的感觉是语法比较奇怪,相关的资源较少,并且习惯了动态语言Python。虽然它一出来就宣称是一种为并发能力而生的语言,但是感觉Python已经能够满足自己的日常的开发要求,所以并不感觉它有什么优势。 但是也在持续的关注它一点一点的发展:发现越来越多的项目采用go作为开发语言来开发程序,也越来越多的程序员,包括Python的程序员,在使用go语言。如今,go1.4 已经支持Android开发,有空又把go拿出来...阅读全文

CSDN博客 2015-01-10 19:01 I2Cbus

Go语言

在/home/keson/go文件夹下建立文件夹src 要建立的包新建立一个文件夹,比如mymath, 然后包里可以放定义的函数,比如 package mymath func Sqrt(x float64) float64{ z:=0.0 for i:=0;i<1000;i++{ z-=(z*z-x)/(2*x) } return z } func Add(a int,b int)int{ return a+b } 该go文件,第一行一定要package mymath 。还可以放单元测试函数te...阅读全文

golang 编码转换 gbk

(一)golang 官方转换包 go get golang.org/x/text/encoding https://godoc.org/golang.org/x/text 注:Go里面内建仅支持UTF8字符串编码,因此如果你用fmt.Printf之类的函数无法正常打印出字符串内容,而只能是一堆乱码! 导入package: import ( "bytes" "fmt" "golang.org/x/text/encoding/simplifiedchinese" "golang.org/x/text...阅读全文

CSDN博客 2015-01-07 10:37 ziyouzhiqiu

使用go,基于martini,和websocket开发简易聊天室

一、首先,需要了解一下websocket基本原理:here 二、go语言的websocket实现: 基于go语言的websocket也有不少,比如github.com/gorilla/websocket。这里选用的应该算是官方的实现code.google.com/p/go.net/websocket 使用go get安装下载即可。(不过,由于周知的原因:(,我是通过golangtc.com的第三方包下载功能才下载来的) 三、server端 第一个遇到的问题,websocket如何和martini...阅读全文

博客园 2015-01-13 18:30 dajianshi

Go语言实战 - 使用SendCloud群发邮件

转自:http://www.kuqin.com/shuoit/20140303/338368.html 山坡网需要能够每周给注册用户发送一封名为“本周最热书籍”的邮件,而之前一直使用的腾讯企业邮箱罢工了,提示说发送请求太多太密集。 一番寻找之后发现了大家口碑不错的搜狐SendCloud服务,看了看文档,价格实惠用起来也方便,于是准备使用它做邮件发送服务器。按照文档的配置一步步走下来发现在发送邮件的时候竟然出错了,错误提示是“unencrypted connection”,奇怪了。 由于用的是sm...阅读全文

博客园 2015-01-12 10:43 zhenxing1114

Go语言的优点(oschina讨论)

Go语言的优点:并发/网络/性能/工具(fmt/pprof/test)/标准库(http/json/log/flags/atomic)/GoogleGo语言垃圾回收器真正致命的缺陷是,会导致整个进程不可预知的间歇性停顿。像某些大型后台服务程序,如游戏服务器、APP容器等,由于占用内存巨大,其内存对象数量极多,GC完成一次回收周期,可能需要数秒甚至更长时间,这段时间内,整个服务进程是阻塞的、停顿的,在外界看来就是服务中断、无响应,再牛逼的并发机制到了这里统统失效。垃圾回收器定期启动,每次启动就导致...阅读全文

博客园 2015-01-15 05:59 findumars

我为什么喜欢Go语言123123

从2000年至今,也写了11年代码了,期间用过VB、Delphi、C#、C++、Ruby、Python,一直在寻找一门符合自己心意和理念的语言。我很在意写代码时的手感和执行的效率,所以在Go出现之前一直没有找到。在熟悉Go之后,我虽没有停下脚步,也去体验了D语言,但几乎立即就放弃了,它的设计还是太复杂。 就说说Go吧。它的好其实也就两个字——简洁! 看很多朋友的留言都觉得这些“少个括号、少个分号”之类的东西没什么意义,真的吗?问题是,既然可以没有,为什么非得有?既然能够少打一个字符,为什么多打了...阅读全文

博客园 2015-01-11 16:00 hellowzd

google hosts 2015 最新版本

chromr浏览器注意:在地址栏里输入 "chrome://flags/",然后查找QUIC,启用该协议,同时建议启用 "SPDY/4",能让访问更流畅。 #google hosts 2015#更新时间:2015年1月13日#持续更新地址:http://www.cnblogs.com/echoyy/ #base services 64.233.168.87 google.com 64.233.168.87 www.google.com 64.233.168.87 m.google.com 64....阅读全文

博客园 2015-01-13 21:09 echoyy

Go推出的主要目的之一就是G内部大东西太多了,系统级开发巨型项目非常痛苦,Go定位取代C++,Go以简单取胜(KISS)

以前为了做compiler,研读+实现了几乎所有种类的语言。现在看语法手册几乎很快就可以理解整个语言的内容。后来我对比了一下go和rust,发现go的类型系统简直就是拼凑的。这会导致跟C语言一样,需要高超的技巧才能写大程序。而rust则没有这种问题,每个部分的组成都很和谐。---------------------------------------------------------------------- Rust是挺优秀的,函数式本来就比命令式来的优雅。但同时也要看到,两种语言的定位不同...阅读全文

博客园 2015-01-10 01:04 findumars

【玩转Golang】reflect.DeepEqual

如果有两个map,内容都一样,只有顺序不同 m1:=map[string]int{"a":1,"b":2,"c":3}; m2:=map[string]int{"a":1,"c":3,"b":2}; 我们怎么判断二者是否一致呢? 如果你打算这么写: fmt.Println("m1==m2",m1==m2) 这是行不通的,go没有重写map的==操作符,编译器会报告错误: invalid operation: m1 == m2 (map can only be compared to nil) 意...阅读全文

博客园 2015-01-13 06:32 dajianshi

个人犯的一个golang routine错误

认识golang也不少时间了,也做过几个项目。最近发现之前用golang写的一个服务,内存涨得比较快,一直没找出来原因来。今天把疑惑发到群里,经过golang学习班的童鞋的指点,发现我一个常用的错误。 在不少golang入门的文章上,用并发的例子一般是这样写的; package main import ( "fmt" "time" ) func main() { messages := make(chan int) go func() { time.Sleep(time.Second * 3) ...阅读全文

博客园 2015-01-13 23:18 nonsuch

golang 使用 iota

iota是golang语言的常量计数器,只能在常量的表达式中使用。 iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。 举例如下: 1、iota只能在常量的表达式中使用。 fmt.Println(iota) 编译错误: undefined: iota 2、每次 const 出现时,都会让 iota 初始化为0. const a ...阅读全文

博客园 2015-01-14 16:55 ghj1976

c,golang 条件变量的使用对比

看到golang 标准库 sync package 提供了传统的mutex, once, cond, rwmutex 等基于共享内存的同步原语,就想写个代码实验一下。 type Cond struct { // L is held while observing or changing the condition L Locker // contains filtered or unexported fields } Cond 结构包含一个可导出的Locker 对象 func NewCond(l...阅读全文

开源中国博客 2015-01-15 13:24 yujian0231

在Go包里添加C代码并且不使用CGO(不需要gcc)

如果go代码里使用了cgo,那么编译的时候电脑上必须按照gcc才能正确编译 这篇文章展示了如何用c写一个包让go调用并且不需要使用cgo A 需要注意的: 1. C代码天生的不安全 2. Go1的兼容性保证不包括C代码 3. C函数不能inline 4. 逃逸分析不能跟踪传递到C函数里的value (逃逸分析:http://kenwublog.com/jvm-optimization-escape-analysis) 5. C编译器(5c,6c,8c)没有对应的Go编译器优化做的好,因此生成的代...阅读全文

CSDN博客 2013-10-13 14:21 varding