关于go程对外部变量的引用

假设有个函数A,A内有多个局部变量,并开启了一个go程B,B直接使用了A的局部变量(调用参数/内部参数)。 很明显的是,每一次调用A,开启的go程都应该只和当时的A的内部变量环境有关,否则程序就要乱套了。 这一点在任何语言里都是必须的,go也是如此。 但是,这就带来一个问题,即:A执行完毕后,其占用的数据堆栈无法被释放(因为要维持其开启的go程的外部环境)。 如果A占用的堆栈相当庞大的话,会导致严重的内存浪费。 因此,新开的go程应尽量减少对外部环境的依赖,尤其是对外部函数局部变量的引用;如果需...阅读全文

开源中国博客 2014-10-09 18:46 刘地

Go语言接口开发——不确定JSON数据结构的解析

在公司主要做接口的开发,会经常遇到接口对接的情况。有的时候,同一个请求返回的JSON数据格式并不一样。如果是正常,则可能只返回一个status字段,说明正常;如果中间出错,除了在status字段里面说明错误类型,还会通过error_message附带错误详细信息。比如要给用户加积分,如果加分失败,还会附带用户id等信息。那么,请求一个接口可能的返回值就是不确定的。 我最初就是定义两个结构体,我处理的数据都共有一个字段status,如果能够解析并且status表示操作成功,那么用封装成功内容的结构...阅读全文

supervisor用为golang后台创建守护进程

supervisor是一个unix的系统进程管理软件,可以用它来管理apache、nginx等服务,若服务挂了可以让它们自动重启。下面基于centos 6.6,描述下具体实现:sudo yum install python-setuptools sudo easy_install supervisor如果没有看到什么报错,那么就安装成功了,可以使用echo_supervisord_conf查看配置详情,而后生成配置文件。sudo echo_supervisord_conf > /etc/supe...阅读全文

51CTO博客 2015-05-06 22:05:14 ponpon_

在Mac OS X(10.7.5)下安装和使用GO语言

在Mac OS X(10.7.5)下安装和使用GO语言 转载自:http://blog.prosight.me/index.php/2010/08/655,进行部分修改; Go语言是Google新推出的结合了动态语言和静态语言优势的一个新兴的语言。下面介绍一下如何在Mac系统下安装和使用这个语言。 1、设置环境变量: $GOROOT GO语言的根目录,通常是$HOME/go,当然也可以是任何其他目录。 $GOOS 和 $GOARCH 标明GO语言所在的系统和处理器类型。$GOOS可以是linux...阅读全文

CSDN博客 2012-11-03 11:52 dabiaoyanjun

如何离线完成go get——安装Apache Thrift有感

今天公司事情不多,我手上的项目还需要等其他同事才能继续,有一段时间比较闲。之前有3个月不在公司回学校了,我们部门用了一个新的开发工具——Apache Thrift,就趁这个时间了解一下。 准备把Thrift安装到阿里云上面。这个东西大概了解了一下,是Facebook开源的一套远程调用的框架,比目前流行的基于REST传输JSON性能好,更优于基于SOAP的XML。关键是它支持多种语言,当然包括我们Team使用的Golang。 从官网下载压缩包安装有问题,没有官网上面描述的bootstrap.sh文...阅读全文

百度云推送

百度云推送支持通知、消息和富媒体的发送。我只实现了最简单的群推送通知的功能。还有针对指定ID的发送,指定通知布局,指定打开网页等一系列设置都没有包含。接下来还要用到这个的时候再去进行开发好了。 关于Android端的推送,有Google的官方支持,但是大家懂得,只能另寻它法。Android不同于iOS,它运行程序在后台有常驻进程。所以就有了其它通知方法。这样就可以由后台进程获取到通知内容后自行展示。发送通知还能用IBM的MQTT,虽然我在他们部门实习过,但是这个东西不会用。。。还有自己实现HTT...阅读全文

Go语言开发环境配置教程及使用

传说go语言的最佳开发环境是苹果的XCODE,我测试的结果确实如此。需要用CGO编译带C代码的go程序的朋友,建议首选苹果的XCODE环境。Windows环境下配置CGO编译非常麻烦,因为Go的文档例子大多以UNIX为例子,所以有些C代码在windows下无法编译,需要修改代码。 我用到的go语言版本是最新的发布版本go 1。点此下载go1.1.2最新版 国人翻译的go官方安装文档的链接: http://code.google.com/p/golang-china/wiki/Install 。这...阅读全文

CSDN博客 2014-04-20 20:23 cometwo

我为什么放弃Go语言

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

CSDN博客 2014-04-30 11:42 kkgbn

Go与C语言的互操作

Go有强烈的C背景,除了语法具有继承性外,其设计者以及其设计目标都与C语言有着千丝万缕的联系。在Go与C语言互操作(Interoperability)方面,Go更是提供了强大的支持。尤其是在Go中使用C,你甚至可以直接在Go源文件中编写C代码,这是其他语言所无法望其项背的。 在如下一些场景中,可能会涉及到Go与C的互操作: 1、提升局部代码性能时,用C替换一些Go代码。C之于Go,好比汇编之于C。 2、嫌Go内存GC性能不足,自己手动管理应用内存。 3、实现一些库的Go Wrapper。比如O...阅读全文

CSDN博客 2014-01-17 08:08 rznice

Go语言的崛起

Go语言的崛起? 英文原文:Google's Go Programming Language Grows Up: Now What? 我们这个世界真的需要另外一种C语言风格的编程语言吗?很显然,谷歌很早就这么认为了,在 2009 年,它借用雷蒙斯乐队的歌“Hey!Ho!Let’s Go”,正式推出了 Go 语言。现在 Go 语言开发团队已经开发出了这种语言的第一个稳定版本,他们称之为 Go 1,他们将这种语言推向世界,希望人们用这种语言“开发出健壮的软件产品和作品。”那么,现在人们对这种语言的使...阅读全文

Go语言开发环境搭建

Go语言的开发环境搭建详细的介绍可以Go的官方网站上找到。网址是:http://golang.org/doc/install.html ,它的中文翻译在这里:http://code.google.com/p/golang-china/wiki/Install。 Go语言官方目前是不支持Windows操作系统的,所以官方的安装介绍是针对Unix/Linux系统的。不过有Geek进行了Windows的移植,可以在这里下载到:http://code.google.com/p/gomingw/downl...阅读全文

CSDN博客 2013-03-13 11:05 zdq0394

Go语言 1.3主要改动翻译

原创文章,转载请注明出处:服务器非业余研究http://blog.csdn.net/erlib 作者Sunface 1、对本地客户端的支持 Native Client在Go1.3中又重新出现啦,目前来说既可以在32位Inter架构处理器上(GOARCH=386)运行,也能在64位Inter架构运行,但是在64位架构上依然使用的是32位pointer,而且对于ARM架构是暂不支持的。注意这个是本地客户端(NaCI),而不是可移植本地客户端(PNaCI)。NaCI的具体用途可见博主的另一篇博客。 2...阅读全文

CSDN博客 2014-04-24 09:52 abv123456789

Go语言 传值和传指针性能对比

转载自达达的博客 以往的C编程经验告诉我们,指针传参会有更好的性能,在Go语言中,这条经验也是通用的。但是需要留意两个问题: 指针传参会导致参数的操作领域不确定,到底函数内部会不会改变传入的对象呢?Go语言中没有类型C那样的const关键字,所以无法控制。Go语言是有GC的,并且这个GC还不是很完善,受对象数量影响较大,传递指针意味着可能多创建不必要的对象,到底指针传参带来的性能提升能不能抵消创建对象产生的GC压力呢?这是一个不好观察到的数据。(原作者达达这里应该是有错误的,首先传值也是复制,要...阅读全文

CSDN博客 2014-04-20 21:11 abv123456789

GoLang之Gvim/Vim配置

2013-12-17 wcdj 之前总结过在subl中使用GoLang,《GoLang及Sublime Text 2之Mac OS X 10.8.4开发环境安装 》。其实GoLang的安装包中已经包含了支持Vim的编写插件,配置方法很简单,如下文所述。 Go in Vim The standard Go distribution includes a Go syntax file for Vim in go/misc/vim/. Installation Instructions Place $...阅读全文

CSDN博客 2013-12-17 20:54 delphiwcdj

Go 编译过程分析(一) -- 编译脚本

go 语言最近很火,与时俱进,我也看了看go 的语法。 看起来 go 还是不错的,有很多新的feature。 就下载了代码研究了一下。 go 的 src 目录下面存在三套编译文件: window 平台, 所有 bat 文件plan9 平台,所有 rc 文件unix 类平台,所有bash 文件 以 unix 编译文件为例, go 的编译入口时在 src/all.bash , 这是一个bash 脚步, 这个脚步只是简单的调用了 make.bash 在脚步结束之后,调用 dist banner 输出编...阅读全文

CSDN博客 2014-08-07 14:48 free2o

怎样编写Go代码

<!-- p {margin-bottom:0.08in} --> 原文: http://golang.org/doc/code.html 介绍 本文档演示了一个简单Go package的开发并介绍了go命令,获取,构建和安装Go包和程序的标准方法. 代码组织 GOPATH 和工作区 Go的设计目标其中之一就是使得写软件更容易.为此,go命令不使用Makefile或者其他的配置文件来指导程序构建.它使用源代码来寻找依赖并决定构建条件.这意味着你的源代码和构建脚本总是同步的;它们是一个东西,是一回...阅读全文

CSDN博客 2013-05-03 15:22 nestingChina