go map操作需要注意的地方

map 数据直接赋值,或者作为函数参数传递时是 指针传递, 修改其中一个则会修改全部变量数据 func main() {     var s_map = make(map[int]int)     for i := 0; i <= 5; i++ {         s_map[i] = i     }     fmt.Println(s_map)     s_map2 := s_map     s_map2[10] = 100     fmt.Println(s_map)     fmt.P...阅读全文

开源中国博客 2013-12-07 10:40 984195889

golang手动管理内存

作者:John Graham-Cumming.   原文点击此处。翻译:Lubia Yang 前些天我介绍了我们对Lua的使用,implement our new Web Application Firewall.  另一种在CloudFlare (作者的公司)变得非常流行的语言是Golang。在过去,我写了一篇 how we use Go来介绍类似Railgun的网络服务的编写。 用Golang这样带GC的语言编写长期运行的网络服务有一个很大的挑战,那就是内存管理。 为...阅读全文

开源中国博客 2013-11-09 11:28 lubia

解决github.com/mattn/go-sqlite3 驱动中的utc时区变为本地系统时...

今晚 在拿sqlite3来做个小demo,驱动用到github.com/mattn/go-sqlite3 发现 就算写入 time.now() 都不是本地时区,于是乎到github.com/mattn/go-sqlite3去查看代码,发现 https://github.com/mattn/go-sqlite3/blob/master/sqlite3.go#L324 这个链接里面高亮的 部分是utc ,最后解决办法是把自己本地源码的sqlite3.go 第324行改成一下: ...阅读全文

开源中国博客 2013-09-04 02:41 错了

go 语言 Makefile 指定依赖包位置

编译 go 程序可以使用自带的一些 Makefile 脚本来简化编写 Makefile 。官方的文档过于简略,没提到需要指定依赖包位置的方法。翻过那几个脚本代码后,发现原来有 LDIMPORTS 和 GCIMPORTS 可以指定。 比如: include $(GOROOT)/src/Make.inc LDIMPORTS=-L ./pkg/_obj GCIMPORTS=-I ./pkg/_obj TARG=tool GOFILES=\ tool.go\ include $(GOROOT)/...阅读全文

博客园 2012-07-02 09:26 shihao

Go语言工具go get的一点问题

使用go get下载github.com等网站的代码时,有时候会发现下载的代码与网站上的代码不一致。如seelog库 查看了go 1.1.2源码中get.go,发现下载代码时会首先查看命名为"go1"的tag。如果有,则下载此tag的代码,而非master分支的当前代码 解决方法(简单一点的): 到$GOPATH/src/第三方库源代码目录,执行git checkout master(或其他分支),切换分支; 执行go get <第三方库>命令,重新编译pkg中.a库文件; 重新go buil...阅读全文

博客园 2013-10-11 09:39 hujunfei

beego cache

package beego import ( "errors" "fmt" "strconv" "sync" "time" ) var ( DefaultEvery int = 60 // 1 minute ) type BeeItem struct { val interface{} Lastaccess time.Time expired int } func (itm *BeeItem) Access() interface{} { itm....阅读全文

开源中国博客 2013-05-13 11:08 Mocos

goroutine背后的系统知识[转]

Go语言从诞生到普及已经三年了,先行者大都是Web开发的背景,也有了一些普及型的书籍,可系统开发背景的人在学习这些书籍的时候,总有语焉不详的感觉,网上也有若干流传甚广的文章,可其中或多或少总有些与事实不符的技术描述。希望这篇文章能为比较缺少系统编程背景的Web开发人员介绍一下goroutine背后的系统知识。 操作系统与运行库 并发与并行 (Concurrency and Parallelism) 线程的调度 并发编程框架 goroutine 1. 操作系统与运行库...阅读全文

开源中国博客 2013-04-04 10:36 chai2010

go语言基础教程2

array 数组声明--var arr [10]int,array由[n]<type>定义。n表示数组大小,type表示数组类型 声明且初始化--arr := [3]int{1,2,3}或者不写大小var arr := [...]int{1,2,3}或者var arr =  [3]int{1,2,3},如果不写大小可以用三个点来表示,go会自动识别,var arr[3]int默认是初始化为0。 ps:记住:=和=之间的区别,如果是:=不需要var,如果是=需要var 二维数组初始化a := [2...阅读全文

博客园 2013-05-07 16:42 GODYCA

go语言html/template解析问题

最近使用go语言html/template包进行一些静态化工作,发现template对于小于号(左尖括号<)不能正确处理,反复研究,没有弄清楚怎么回事,后来变通了一下,先对模板进行EscapeString编码,格式化以后,再进行UnescapeString编码,问题得到解决;但还是没弄清楚template为什么对单独的小于号(左尖括号<)无法正确格式化,但发现如果左尖括号的右边有一个或多个右尖括号(>),则能正确解析格式化,而template源码包读起来很费解,最终没有弄明白,希望知道的同学能告...阅读全文

Ubuntu 下 nginx , php , mysql 和 golang 的简单安装

我是搞php出身,自然安装lnmp是常规技能。以前的手段还是lnmp安装包,比如军哥的lnmp1.0。随着php和mysql的更新,大多数一键安装都开始版本老化,更新困难的问题。因此,重新研究了一下Ubuntu下lnmp的安装,发现现在简单的多,记录一下。 另外最近在学习golang,Ubuntu下安装自然也是必须的过程。不过golang的安装也有一些奥妙。当然,不是源码安装的啦。 Nginx Stable/Development Ubuntu下的包管理器是apt-get或者...阅读全文

开源中国博客 2014-02-19 23:26 傅小黑

golang连接orcale

使用glang有一段时间了,最开始其实并不太喜欢他的语法,但是后来熟悉之后发现用起来还挺爽的。之前数据库一直使用mysql,连接起来没有什么问题,github上有很多完善的驱动,所以以为连接其他数据库也应该没什么问题,近日听说其连接orcale比较麻烦,所以就试了试。     之所以连接orcale比较麻烦是因为orcale并没有提供golang的驱动,所以并不能像java那样引入个驱动包就能连接,也不能像mysql之类的开源数据库可以自己实现驱动。不过正所谓天无绝人之路,既然纯go实现...阅读全文

开源中国博客 2014-06-16 22:54 oO脾气不坏Oo

golang的fmt包

package fmt import "fmt" mt包实现了类似C语言printf和scanf的格式化I/O。格式化verb('verb')源自C语言但更简单。 Printing verb: 通用: %v 值的默认格式表示。当输出结构体时,扩展标志(%+v)会添加字段名 %#v 值的Go语法表示 %T 值的类型的Go语法表示 %% 百分号 布尔值: %t 单词true或false 整数: %b 表示为二进制 %c 该值对应的unicode码值...阅读全文

开源中国博客 2014-08-21 10:20 刘地

go语言初记

快速了解 http://go-tour-zh.appspot.com/welcome/1 (可以需要爬墙) 下面记录下了解go的过程,特别记录下与你脑子里原有“观念”不同的地方: 1.  声名 初始化,类型在后面,不一样 var a, b int var a,b =1,2var c, python, java = true, false, "no!" a,b:=func fname(string,string) //非声明,必须在func使用 短声明变量 在函数中,`:=` 简洁赋值...阅读全文

博客园 2014-07-15 16:45 haanico