开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
Go - 开源中国社区
Go

Go是Google开发的一种编译型,並發型,并具有垃圾回收功能的编程语言。 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊...

完整介绍Go首页Go文档Go下载 | 授权协议: BSD
Go 很好,为什么我们不使用它?
任何在 Zapier 或者听过我周五快速演讲的人都可以证明,我认为 Go 是一个很棒的编程语言。在这篇文章中,我将分享一下为什么我认为它很棒,使用它的一些缺点,以及为什么它还不是我们...
oschina 发布于 3个月前 23
使用 Go 编写 PostgreSQL 触发器
怎样应用 PostgreSQL 函数和 Golang 中的触发器? PostgreSQL 中的触发器是一种简单却功能强大的机制,它能反应表(table)中所正在发生的变化。 下文描述了怎样在 Go 中编写 Postgr...
oschina 发布于 4个月前 6
五大理由从 Python 转到 Go 语言
“ Python 是非常强大的,特别是 Python3 有了异步功能,但是 GO 将完全取代它在大企业中的存在…” 如果你真正理解了引号中的话,你可能会去尝试 Go 编程语言。我认为 Go 是很简单的...
oschina 发布于 4个月前 120
cgo 和 Go 语言是两码事
cgo不是Go     借用 JWZ 的一句话 有些人,当他们面临一个问题时,认为“我知道,我会使用 cgo ”。那么现在,他们有了两个问题。 最近有人在 Gopher 的 Slack Channel 上使用 cg...
oschina 发布于 2年前 27
从 Go 开发者的角度看 Elixir 的设计思想
从 Go 开发者的角度看 Elixir 的设计思想 免责声明: 这篇文章不是带你入门的,我只是把玩了一下这个编程语言,也不是什么专家,就把我写的当做一道开胃菜吧。我只是把我几个小时的调...
drkaka 发布于 2年前 4
使用 Go 进行 iOS 和 Android 编程
虽然 Go 并不是一门新语言,不过最近两年来 Go 还是增加了很多有趣的特性,而且使用这门语言的知名项目的数量也在快速的增长。我写过一篇文章,介绍了 SitePoint 用到的编程语言,其...
oschina 发布于 2年前 45
Go 将统治下一个十年
标题相当夸张是不是? 我本来打算用“规则”这个词的,但真的认为“统治”的描述更加准确。 只有一点就是,如题的观点是事实。 每一天我都跟许多人谈论到 Go。除了像 Google 或者 Gi...
做个坏人 发布于 2年前 160
当 DNS 解析器遇到 Go fuzzer
在CloudFlare,我们有很多github.com/miekg/dns Go DNS library的用户,并且我们确保尽可能多的促进它的发展。因此,当dmitry vyukov发布了go-fuzz并开始发现Go标准库中成千上万的b...
oschina 发布于 2年前 6
使用 gdb 工具调试 Go
排除应用程序故障是比较复杂的,特别是处理像 Go 这样的高并发语言。它更容易在具体位置使用 print 打印语句来确定程序状态,但是这个方法很难根据条件发展去动态响应你的代码。 调试...
oschina 发布于 2年前 8
使用 Go 构建 Resilient Services - 技术会谈
这是一篇在 GopherCon 2015 的技术会谈,主讲人 Blake Caldwell 曾是 Fog Creek 里 Kiln 团队的软件工程师,他将讲述如何使用 Go 来重写的我们的 SSH 反向代理, KilnProxy,达到了性...
oschina 发布于 2年前 2
Go GC:在 Go 1.5 解决延迟问题
Richard L. Hudson (Rick) 是内存管理方面的专家,发明了 Train, Sapphire(http://people.cs.umass.edu/~moss/papers/jgrande-2001-sapphire.pdf), 和 Mississippi Delta 等算法,...
oschina 发布于 2年前 13
奇虎360 和 go
在中国,奇虎 360 是一个互联网和手机安全产品及服务的主要供应商,截止到 2014 年 6 月,奇虎拥有 5 亿的 PC 活跃用户以及超过 6.4 亿移动用户。奇虎还运营着中国最受欢迎的网络浏览...
asdfsx 发布于 2年前 98
为什么说 Go 和 Rust 不是竞争者
这篇短文解释了,为什么我认为 Go 和 Rust 并不是竞争对手。 为什么人们认为 Go 和 Rust 是竞争关系 在解释为什么我认为 Go 和 Rust 不是竞争对手前,我想说明一下为什么这个问题会被...
oschina 发布于 2年前 29
为 Java 程序员准备的 Go 入门 PPT
这是 Google 的 Go 团队技术主管经理 Sameer Ajmani 分享的 PPT,为 Java 程序员快速入门 Go 而准备的。 视频 这个 PPT 是 2015年4月23日在 NYJavaSIG 中使用的。 前往 YouTube 观看...
oschina 发布于 2年前 57
Go 语言的手工内存管理
介绍 注:如果您对这篇文章有不同观点,欢迎指正 - 我并不是这方面的专家。 我们从大量的 go 用户中收集了有关于使用 defer 和 panic 的性能统计。不像其它的 APM/error 记录公司,我...
oschina 发布于 2年前 14
Go 语言的分布式读写互斥
Go语言默认的 sync.RWMutex 实现在多核环境中表现并不佳,因为所有的读者在进行原子增量操作时,会抢占相同的内存地址。该文探讨了一种 n-way RWMutex,也可以称为“大读者(big read...
oschina 发布于 2年前 10
使用 Go 构建一个解释型语言
我目前正参与我们的一个大项目,Alloy。Alloy 是一种编译型的编程语言。我目前在计算机及编程领域最喜欢的一个爱好就是语言。事实上,我认为每个程序员都应该对编程语言是如何工作的...
oschina 发布于 2年前 15
Go 程序的性能调试问题
假设你手上有个Go语言编写的程序,你打算提升它的性能。目前有一些工具可以为此提供帮助。这些工具能帮你发现包括CPU、IO和内存在内多种类型的热点。所谓热点,是指那些为了能显著提...
大蓝妹 发布于 2年前 15
GO 语言学习的五个阶段(带例子)
Francesc (@francesc) 是 Go 核心团队的一员, 是提倡 Google Cloud 平台的开发者. 他是一个编程语言的爱好者, Google的技术指导大师, Go tour的创造者之一. 这个讨论的灵感来自于另一...
砼砼 发布于 2年前 20
将 Node.js 换成 Go
回顾过去的一年,我们在技术栈上的最大改变就是从 Node.js 切换到 Go 。我们的联合创始人,Steve Kaliski, 在 Poptip 把 Node.js 切换成了 Go,可惜他没有学习到当时的教训。在用 ...
oschina 发布于 3年前 105
使用 Go 语言来提升 Ruby 应用的性能
近年来,Go语言的表现相当引人注目。它与Ruby的差异明显,Go的优势,例如成本低廉且易用的并发性能,使得我们寻找如何使用的方法,应用到处理工作任务中去。本文着重于阐述能够引领你...
oschina 发布于 3年前 47
使用 Go 语言实现优雅的服务器重启
Go被设计为一种后台语言,它通常也被用于后端程序中。服务端程序是GO语言最常见的软件产品。在这我要解决的问题是:如何干净利落地升级正在运行的服务端程序。 目标: 不关闭现有连接...
oschina 发布于 3年前 30
为什么 Go 不是一款好的编程语言
我喜欢 Go. 常用它实现各种功能(包括在写本文时的这个博客). Go 很实用,但不够好。 不是说它有多差, 只是没那么好而已。  一门编程语言, 也许会用上一辈子, 所以选择的时候要注...
oschina 发布于 3年前 158
构建一个可测试的 Go Web 应用
几乎每一个程序员都赞同测试是重要的,但测试以多种方式让写测试的人员打退堂鼓。它们可能运行慢,可能使用重复的代码,可能一次测试得太多导致难以定位测试失败的根源。 这篇文章中...
oschina 发布于 3年前 3
Go 语言使用 TCP keepalive
如果你写过某些 TCP socket 代码,你可能会疑问:如果网线被拨掉或者远程主机崩溃了我的TCP连接会怎样? 简短的答案是:一点影响都没有。这种情况下连接的结束远程主机是不会发送FIN...
oschina 发布于 3年前 12
Go 语言的依赖注入
依赖注入(DI)是一种解耦组件之间依赖关系的设计模式。在需要的时候,不同组件之间可以通过一个统一的界面获取其它组件中的对象和状态。Go语言的接口设计,避免了很多需要使用第三方...
oschina 发布于 3年前 16
产品环境中 Go 语言的最佳实践
在SoundCloud,我们为客户构建了产品的API。或者说,我们主要的网站、手机客户端和手机应用是该API的第一批客户。该API背后是一个领域性的服务:SoundCloud基本上以面向服务体系结构...
oschina 发布于 3年前 12
在 Go 语言中,正确的使用并发
Glyph Lefkowitz最近写了一篇启蒙文章,其中他详细的说明了一些关于开发高并发软件的挑战,如果你开发软件但是没有阅读这篇问题,那么我建议你阅读一篇。这是一篇非常好的文章,现代...
lidashuang 发布于 3年前 17
Go 并发模型:管道和取消
简介 Golang的原子并发特性使得它很容易构造流数据管道,这使得Golang可有效的使用I/O和多CPU特性。本文提出一些关于管道的示例,在这个过程中突出了操作失败的微妙之处和介绍处理失...
oschina 发布于 3年前 4
Go 语言的 HTTP 标准库中的内存泄漏问题?
使用一个go库实现的一个http服务器: package main import (     "net/http" ) func main() {     http.ListenAndServe(":8080", nil) } 它将使用大约850kb的内存启动...
oschina 发布于 4年前 19
Go 1.3+ 编译器变革
概述 目前Go编译器是C写的,是时候换成Go啦。 背景 “gc"Go工具链来自Plan 9编译器的工具链。组装器、C编译器和链接器基本没变。Go的编译器(cmd/gc,cmd/5g,cmd/6g,cmd/8g)是配合工具...
oschina 发布于 4年前 21
使用 Go 对 Nginx 进行性能测试
目前有很多提供Go语言HTTP应用服务的方法,但其中最好的选择取决于每个应用的实际情况。目前,Nginx看起来是每个新项目的标准Web服务器,即使在有其他许多不错Web服务器的情况下。然...
oschina 发布于 4年前 16
为 Ruby 程序员准备的 Go 入门教程
那些在Google的大牛们开发出了一种称为Go的牛叉的语言。乍一看,Ruby和Go有点像远房表亲。其实不然,他们那些互为补充的功能却让他们成为一对完美组合。 Ruby程序员花时间了解一下G...
oschina 发布于 4年前 25
深入 Go Playground 内幕
简介 2010年9月,我们介绍了Go Playground,这是一个完全由Go代码组成和返回程序运行结果的web服务器。 如果你是一位Go程序员,那你很可能已经通过阅读Go教程或执行Go文档中的示例程...
oschina 发布于 4年前 3
拥抱 Go 的 HTTP 工具
不久前我发布了nosurf,这是Go语言的一个CSRF跨站请求伪造(Cross-Site Request Forgery)中间件。编写一个看起来简单并且小巧的包就足以让你爱上Go处理HTTP的方式。然而,这却取决于我...
oschina 发布于 4年前 13
Golang channels 教程
Go语言内置了书写并发程序的工具。将go声明放到一个需调用的函数之前,在相同地址空间调用运行这个函数,这样该函数执行时便会作为一个独立的并发线程。这种线程在Go语言中称作gorou...
愚安 发布于 4年前 7
在 Cloud 9 中搭建和运行 Go
简介 自从使用了Chromebook,我脑中一直充斥着在云端开发的念头。在我使用过的位数不多的在线开发环境中,唯有 Cloud 9令我比较满意。实际上,Cloud 9还不支持Go的开发,因此本文我...
qingfeng哥 发布于 4年前 10
Go 1.3 链接器检修
摘要 链接器是构建和运行一个标准Go程序中最慢的一部分。为了阐明这一点,我们打算将连接器分为两部分。也许每一部分都可以写入GO中。 背景 链接器一直是Plan9工具链中最慢的一部分,...
oschina 发布于 4年前 10
LiteIDE 开发工具指南 (Go语言开发工具)
谷歌系统所使用的编程语言Go,近年来发展的越来越成熟、方便易用。现在,我们可以通过使用LiteIDE让Go语言编程变得更加简单。(注:按本文标题和结尾来看,本文应该只是一个系列中的...
oschina 发布于 4年前 33
数组、切片(以及字符串): append内置函数的运作机制
介绍 数组是编程语言中最常用到的功能之一. 数组看起来是比较简单,但在一个语言要实现一个数组的时候,有些问题必须要解决,如:: 固定大小或可变大小? 是类型的一部分? 多为数组的...
hvisli 发布于 4年前 0
为什么 C++ 程序员不想改用 Go 语言
下面是我在2012年六月旧金山Go SF会议上的发言。 这是一个私人谈话。我不单是对在这坐的Go开发团队成员说,我要感谢团队在推动Go发展上所做的一切。我还想感谢Go SF组织者给了我跟大...
oschina 发布于 4年前 38
在生产环境中使用 Go 语言两年的总结
在iron.io的生产环境使用Go语言两年后,我想分享我们的经验和感受。我们是第一批在生产环境中使用Go(Go语言)的公司之一,长久以来我们不知道该有怎样的预期,但到目前为止,很棒。...
Garfielt 发布于 4年前 7
对比 Python 和 Go 语言的每秒请求数
我使用Python工作已经有几年了,最近开始了一个关于GO的调查,主要看作是一个缓解瓶颈的实验,还没有大规模web服务器部署。 我用不同语言写了一个简单的REST服务,使用ab工具检测响应...
oschina 发布于 4年前 120
Scala 和 Go 语言的 TCP 基准测试
最近我们需要一些带有些特殊特征的负载平衡器。现成可取并不是我们想要的获取此类特征的途径。 因此我们着手调研怎样才能写出我们自己的软件负载平衡器。由于我们的大部分代码库和专...
oschina 发布于 4年前 20
Java程序员快速入门 go 语言
这篇文章帮助Java程序员快速入门Go语言。 本文将以一个有代表性的例子为开始,以此让Java程序员对Go语言有个初步认识,随后将详细的描述Go语言的各个构成模块,最后以一个例子来讲解...
oschina 发布于 4年前 42
对Go团队的一次访谈
在Google I/O 2013上,几名Go团队的成员组织了一个名为“炉边谈话”的活动。Robert Griesemer, Rob Pike, David Symonds, Andrew Gerrand, Ian Lance Taylor, Sameer Ajmani, Brad ...
贝多芬的悲伤。 发布于 4年前 56
Go 是怎么使用 Go 来编译自身的
在邮件列表或者IRC聊天室中经常有人问及Go编译器、运行时和内部实现的细节文档。目前,关于Go内部实现的最权威的文档还是源码本身,鼓励大家试着直接去阅读源码。 话虽如此,从Go 1....
oschina 发布于 4年前 18
Go 1.1 性能提升 —— 第1部分
这是第一次在一系列的文章中分析Go 1.1中对性能的改进。 早先已有报道(这里,和这里),只须简单的使用Go 1.1重新编译性一下你的代码,就能提升30-40%的性能。在linux/amd64平台中,...
oschina 发布于 4年前 0
Go 1.1 性能提升 —— 第3部分
本文是对最近推出的Go 1.1中性能提升进行探究的一系列文章中的最后一篇, 你也可以读一下第一部分和第二部分,了解有关在amd64和386这两方面的信息。 本文着重介绍arm平台的性能。G...
oschina 发布于 4年前 0
Go 1.1 性能提升 —— 第二部分
这是探索Go 1.1 正式版性能三部曲中的第二部分 在第一部分中我是在AMD64平台下面做的测试,同时包含了在运行时和编译前优化的各项改进. 在本文中,我将重点关注Go 1.1 在 I386平台上...
oschina 发布于 4年前 0
在 Go 语言中处理 Unicode
如果‘Go’通常是指在公园散步,用Go语言处理Unicode码可以描述为不小心走进了雷区,比如,如果我们要获取从前端页面的一句简单字符串“Hello,世界”的长度.会得到什么结果? fmt.Pr...
oschina 发布于 4年前 27
GO 语言的可靠性
作为上周在旧金山举行的Canonical Cloud Sprint的一份子,我参与了 Dave Cheney 在GoSF meetup上关于移植和拓展juju的演说。 Juju 是一个开源的云管理和服务编排工具。即使你以前没听...
renwofei423 发布于 4年前 4
Go 语言中实现优雅的停止程序
过早地部署这种行为非常粗鲁,尤其是在部署时还要中断用户请求的情况下更是如此,因此,我们在Betable构建的Go服务要在不中断任何用户请求的情况下优雅地中止服务。其基本思想就是停...
oschina 发布于 4年前 13
Go 语言中漂亮的并发特性
时不时地学习一门新的编程语言对你来说是大有裨益的,哪怕这门语言并不那么成功甚至有些过时。用新的编程语言来解决老的编程问题会迫使你对自己的某些观点、方法甚至是习惯进行重新思...
oschina 发布于 4年前 9
Python 开发者在迁移到 Go 前需要知道的事情
这是一篇记录了我们把一大段 Python/Cython 代码迁移到 Go语言经历的(长)博客。如果你希望了解整个故事、背景等所有的内容,请接着读。如果只对 Python 开发者进入之前需要知道的东...
oschina 发布于 4年前 46
Go在谷歌:以软件工程为目的的语言设计
1. 摘要 (本文是根据Rob Pike于2012年10月25日在Tucson, Arizona举行的SPLASH 2012大会上所做的主题演讲进行修改后所撰写的。) 针对我们在Google公司内开发软件基础设施时遇到的一些...
oschina 发布于 4年前 23
Go 语言构建 RESTful Web 服务
本文是 Hardcore Google 系列的一部分,本系列的其它部分于下面地址可以找到: App Engine 单元测试 Go 语言实现 REST 风格网络服务器 在开始着手开发网络应用之前,你需要先选择你所...
lidashuang 发布于 4年前 16
Go 面向对象
Go是一个完全面向对象的语言。例如,它允许基于我们定义的类型的方法,而没有像其他语言一样的装箱/拆箱操作。 Go没有使用classes,但提供很多相似的功能: 通过嵌入实现的自动消息委...
lidashuang 发布于 4年前 14
为什么我用 Go 来编程
Go 语言作为一种新颖的编程语言, 它最初是由谷歌为了服务器开发而发明出来的。 而它的发明者们,更是数位成就卓绝、技艺非常的计算机科学泰斗:像是 Ken Thompson 和 Rob Pike 这对...
oschina 发布于 5年前 70
为什么不使用Go语言呢?
Go是一个来源于C语言的编程语言,在保留了C语言的简约风格的同时也进行了很多改进。 今年的早些时候我们对比过了几种native编程语言,包括D语言、Go、Rust和Vala。这里我们将分析来自...
王振威 发布于 5年前 0
顶部