安全的Go语言从源数组构建目标Slice

今天在QQ群里聊到GO语言需要改进的地方,快乐的吐槽了一番。我之前最希望用数组构建slice的语法变更一下,因为现在流行的[start:end]方式并不严谨。后来不记得是哪个版本的时候,引入了三段式的[start:end:max]语法来创建slice。这样是安全了,但是确丑了很多。 如下例所示,二段式的定义在append操作后会污染到源数组: a := [5]int{1, 2, 3, 4, 5} s1 := a[1:3:3] s2 := a[1:3] _ = append(s1, 6) fmt....阅读全文

开源中国博客 2014-11-11 17:39 sz_Promi

[Go]Log记录

后端系统中的Log是相当重要的,做过高并发服务的同学都会认同这一点。相对而言,调试已经用处不大了,对于这样的项目,我现在也习惯了这种开发方式,有两个原因:1.debug只能在开发环境,到产线环境就不灵了。2.在并行计算下,debug可能无法发现潜在的问题。 有了以前做node.js的经验,放弃debug没有想象中那么可怕,只要我们程序设计合理,结构清晰,日志完整,看到异常信息后基本都可以快速定位问题所在。 做Java的时候有log4j,做.NET程序的时候有log4net, 做Node.js的时...阅读全文

CSDN博客 2014-11-09 13:53 abv123456789

Sublime Text 2搭建Go开发环境(Windows)

Sublime Text 2搭建Go开发环境(Windows) 转自:http://www.cnblogs.com/sevenyuan/archive/2013/03/01/2938351.html 首先是安装Go 这里有很详细的安装说明,http://code.google.com/p/golang-china/wiki/Install 或者http://golang.org/doc/install 下面我们在window下面安装,google有提供win安装包,对于新手还是非常简单的! ht...阅读全文

CSDN博客 2013-08-31 22:24 heiyitian

深入浅出Docker(一):Docker核心技术预览

【编者按】Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源。Docker提供了一种在安全、可重复的环境中自动部署软件的方式,它的出现拉开了基于云计算平台发布产品方式的变革序幕。为了更好的促进Docker在国内的发展以及传播,我们决定开设《深入浅出Docker》专栏,邀请Docker相关的布道师、开发人员、技术专家来讲述Docker的各方面内容,让读者对Docker有更深入的了解,...阅读全文

InfoQ 2014年7月31日 肖德时

Go 语言的高级并发模式

Go语言的一个很大的优势就是内置了goroutine机制,使得开发者可以方便地编写并发程序。 在去年的Google I/O大会上,Go语言开发团队成员Rob Pike介绍了Go的并发模式。如今该语言已经到达了1.1版本,性能和安全性较之以前更加完善。在本月举行的I/O 2013上,团队成员Sameer Ajmani带来了更高级的Go语言并发模式演讲,以帮助开发者更深入地了解Go语言的并发编程问题。 你可以通过这个幻灯片来查看:https://talks.golang.org/2013/advco...阅读全文

CSDN博客 2014-02-06 01:23 johnhomsea

Go语言并发之美:解释其中内核、外延

多核处理器越来越普及,那有没有一种简单的办法,能够让我们写的软件释放多核的威力?答案是:Yes。随着Golang, Erlang, Scale等为并发设计的程序语言的兴起,新的并发模式逐渐清晰。正如过程式编程和面向对象一样,一个好的编程模式需要有一个极其简洁的内核,还有在此之 上丰富的外延,可以解决现实世界中各种各样的问题。本文以GO语言为例,解释其中内核、外延。 并发模式之内核 这种并发模式的内核只需要协程和通道就够了。其中协程负责执行代码,通道负责在协程之间传递事件。 并发编程一直以来都是个...阅读全文

CSDN博客 2013-06-07 19:06 e_wsq

我为什么喜欢Go语言

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

CSDN博客 2013-01-13 22:35 summerhust

golang讲解(go语言)标准库分析之os(5)

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; Golang标准库 今天我们继续os包分析~~~木有废话~~ (1)os.Rename()这个函数的原型是func Rename(oldname, newname string) error,输入的是旧文件名,新文件名,然后返回一个error其实这个函数的真正实现用的syscall.Rename()然后通过MoveFile(from *uint16, to *uint16) (err error)...阅读全文

微度网络 2014-01-02 widuu

十条有用的 GoLang技术

这里是我过去几年中编写的大量 Go 代码的经验总结而来的自己的最佳实践。我相信它们具有弹性的。这里的弹性是指: 某个应用需要适配一个灵活的环境。你不希望每过 3 到 4 个月就不得不将它们全部重构一遍。添加新的特性应当很容易。许多人参与开发该应用,它应当可以被理解,且维护简单。许多人使用该应用,bug 应该容易被发现并且可以快速的修复。我用了很长的时间学到了这些事情。其中的一些很微小,但对于许多事情都会有影响。所有这些都仅仅是建议,具体情况具体对待,并且如果有帮助的话务必告诉我。随时留言:) 1...阅读全文

CSDN博客 2014-11-11 10:51 maliro

[Go语言]无辜的goroutine

简介: 本文主要是针对一些对于goroutine的“指控”提出我自己的看法,特别是轩脉刃的一篇博客文章《论go语言中goroutine的使用》提出了goroutine的几宗罪。实际上goroutine确实有增加程序复杂度而容易导致问题之处,特别是死锁;但是另外的一些指控,我认为实际上goroutine是没有直接责任的。 以下就《论go语言中goroutine的使用》的内容一一提出我的观点。 第一个指控:goroutine的指针传递是不安全的 原文: fun main() { request :=...阅读全文

新浪博客 2013-04-03 15:11 stevewang

[golang]GO语言编写的基于UDP协议的简易聊天软件

初学GO不到两周,本着熟悉语言的目标写了这个小程序,漏洞很多,实现上写的也有些渣渣,欢迎大家阅读指点。 下载地址:https://github.com/yinxin630/gochat 简单思路描述: 0、服务端监听客户端请求,完成会话转发的任务 1、服务端采用心跳包维护用户在线状态 2、客户端通知服务端自己的监听地址,创建服务端-客户端信息通道 服务端: package main import ( "fmt" "net" "os" "strconv" "time" ) //用户信息 type ...阅读全文

CSDN博客 2014-04-04 17:33 u011229962

Golang 语言windows环境搭建

本人是xp系统; 1.首先下载go语言安装包,进入下面的链接,选择适合自己的安装包进行下载(我用的go1.0.3.windows-386.msi),然后安装即可,记录下安装后的根目录以备配置使用。 下载地址:https://code.google.com/p/go/downloads/list 点击安装,我默认安装在路径C:\Go 2.下载liteIDE,进入下面的链接,选择适合自己的安装包(我用的liteidex17.windows-webkit.7z),下载完成后解压到任意目录,然后进入根目...阅读全文

CSDN博客 2013-04-28 00:00 oopsangle

如果golang想成为主流语言,还需要解决哪些重要的问题

最近编程语言当中,golang无疑是风生水起,年度语言,服务器端语言,并发语言,皇冠可谓不少。golang开发的初衷是替换掉c/c++,作为系统级语言,加上在1.3版本中打算将编译系统从原来c语言开发的plan 9编译器,改为golang实现,可谓野心勃勃。golang最令人赞美的就是简单的语法,你可能花不了一天就能掌握golang的语法,关键字。golang的goroutine和channel给了大家一种简单的并发编程模型(在此指出的是channel是另一种选择,并不是用来替换掉Lock机制的...阅读全文

CSDN博客 2014-02-15 18:13 legend_x

golang 中regexp包用法

本文转自Golove博客:http://www.cnblogs.com/golove/p/3270918.html regexp 包中的函数和方法 // regexp.go ------------------------------------------------------------ // 判断在 b 中能否找到正则表达式 pattern 所匹配的子串 // pattern:要查找的正则表达式 // b:要在其中进行查找的 []byte // matched:返回是否找到匹配项 // ...阅读全文

CSDN博客 2014-10-20 21:06 chenbaoke

Ubuntu12.04下以tar.gz包方式安装Go语言

1、下载Go语言安装包 http://code.google.com/p/go/downloads/detail?name=go1.0.3.linux-386.tar.gz&can=2&q= 2、安装gcc,Go语言自身的编译器需要gcc编译一下。 sudo apt-get install bison gcc libc6-dev ed gawk make python-setuptools python-dev build-essential3、配置系统文件 vim ~/.bashrc在文件后添...阅读全文

CSDN博客 2014-07-20 21:04 u012814360

Go语言入门资料

1:Go语言项目地址 http://code.google.com/p/go/ 2:Go语言下载地址 http://code.google.com/p/go/downloads/list 3:Go语言中文翻译项目地址 http://code.google.com/p/golang-china/ 4:Goclipse插件下载地址 http://code.google.com/p/goclipse/ 5:Go语言官方在线入门示例 http://tour.golang.org/#1 6:Go语言API...阅读全文

CSDN博客 2012-11-14 14:28 collonn

Go的异常处理 defer, panic, recover

Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱。因为开发者很容易滥用异常,甚至一个小小的错误都抛出一个异常。在Go语言中,使用多值返回来返回错误。不要用异常代替错误,更不要用来控制流程。在极个别的情况下,也就是说,遇到真正的异常的情况下(比如除数为0了)。才使用Go中引入的Exception处理:defer, panic, recover。 这几个异常的使用场景可以这么简...阅读全文

CSDN博客 2014-01-13 16:59 kjfcpua

为什么我们需要一门新语言——Go语言

编程语言已经非常多,偏性能敏感的编译型语言有 C、C++、Java、C#、Delphi和Objective-C等,偏快速业务开发的动态解析型语言有 PHP、Python、Perl、Ruby、JavaScript和Lua等,面向特定领域的语言有 Erlang、R和MATLAB等,那么我们为什么需要 Go这样一门新语言呢? 在2000年前的单机时代, C语言是编程之王。随着机器性能的提升、软件规模与复杂度的提高,Java逐步取代了C的位置。尽管看起来 Java已经深获人心,但 Java编程的体验并未...阅读全文

CSDN博客 2012-08-14 09:57 turingbooks

select in Go's runtime

select可以用来管理多个channel的读写,以及实现channel读写timeout等。select并不是以库的形式提供,而是语言级支持的语法特性,因此select的实现主要由编译器和runtime共同完成,本文将重点关注runtime部分。 select语句的执行主要由4个阶段组成,依次是创建select对象,注册所有的case条件,执行select语句,最后释放select对象。这里提到的select对象是底层runtime维护的一个Select结构,这个对象对Go程序来说基本是透明的...阅读全文

skoo's notes 26 September 2013 skoo