go build和go install的区别

go build通过go build加上要编译的Go源文件名,我们即可得到一个可执行文件,默认情况下这个文件的名字为源文件名字去掉.go后缀。 $ go build hello.go $ lshello hello.go 当然我们也 可以通过-o选项来指定其他名字: $ go build -o mygo hello.go $ lsmygo hello.go 如果我们在go-examples目录下直接执行go build命令,后面不带文件名,我们将得到一个与目录名同名的可执行文件: $ go bu...阅读全文

阅读:30570 评论:1

go语言写日志

go语言有一个标准库,log,提供了最基本的日志功能,但是没有什么高级的功能,如果需要高级的特性,可以选择glog或log4go。 glog是google提供的,类似于google的c++ log库,使用起来非常简单,下面介绍一下;log4go的用法和log4j一样,可配置性比较高。 glog只提供了少数几个选项,通过命令行控制,例如: -log_dir: 日志文件保存目录 -alsologtostderr: 日志写入文件的同时,输出到stderr -v:配置V输出的等级。 glog使用非常简单...阅读全文

2013 年 08 月 09 日 铁哥
阅读:4083 评论:1

Go 字符串格式化

Go对字符串格式化提供了良好的支持。下面我们看些常用的字符串格式化的例子。 package main import "fmt" import "os" type point struct { x, y int } func main() { // Go提供了几种打印格式,用来格式化一般的Go值,例如 // 下面的%v打印了一个point结构体的对象的值 p := point{1, 2} fmt.Printf("%v\n", p) // 如果所格式化的值是一个结构体对象,那么`%+v`的格式化输出...阅读全文

阅读:43099 评论:1

golang中并发sync和channel

golang中实现并发非常简单,只需在需要并发的函数前面添加关键字"go",但是如何处理go并发机制中不同goroutine之间的同步与通信,golang 中提供了sync包和channel机制来解决这一问题. sync 包提供了互斥锁这类的基本的同步原语.除 Once 和 WaitGroup 之外的类型大多用于底层库的例程。更高级的同步操作通过信道与通信进行。 type Cond func NewCond(l Locker) *Cond func (c *Cond) Broadcast() f...阅读全文

2014-12-01 15:19 chenbaoke
阅读:43143 评论:0

GO使用SMTP发送邮件

核心代码:smtp.SendMail(host, auth, user, send_to, msg),auth := smtp.PlainAuth("", user, password, hp[0]) 可行方案:使用企业邮箱的SMTP发送邮件,host :="smtp.exmail.qq.com:25",因此需要一个企业邮箱的账号和密码 直接上代码: main.go package main import ( "fmt" "net/smtp" "strings" ) func SendToMai...阅读全文

阅读:46620 评论:4

无坑安装使用godep(go语言第三方依赖管理)

安装godep 官方的安装文档是使用go get github.com/tools/godep,很可惜,因为“网络”问题会报一个找不到golang.org/x/tools/go/vcs的错误。 而https://github.com/golang/tools 是 golang.org/x/tools的一个镜像,代码是一样的,所以我是如下安装的。 go get github.com/golang/tools 在GOPATH\src\github.com目录下就有tools文件夹。 在src下和gi...阅读全文

2014-12-31 16:42 wiselyman
阅读:25724 评论:0

go语言写日志

go语言写日志 go语言有一个标准库,log,提供了最基本的日志功能,但是没有什么高级的功能,如果需要高级的特性,可以选择glog或log4go。 glog是google提供的,类似于google的c++ log库,使用起来非常简单,下面介绍一下;log4go的用法和log4j一样,可配置性比较高。 glog只提供了少数几个选项,通过命令行控制,例如: -log_dir: 日志文件保存目录 -alsologtostderr: 日志写入文件的同时,输出到stderr -v:配置V输出的等级。 gl...阅读全文

2015-01-27 14:14 chenglinhust
阅读:12162 评论:0

golang的select典型用法

golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。 示例: ch1 := make (chan int, 1) ch2 := make (chan int, 1) ... select { case <-ch1: fmt.Println("ch1 pop one element") case <-ch2: fmt.Println("ch2 pop one element") } 注意到 selec...阅读全文

阅读:17109 评论:1

Goroutine + Channel 实践

背景 在最近开发的项目中,后端需要编写许多提供HTTP接口的API,另外技术选型相对宽松,因此选择Golang + Beego框架进行开发。之所以选择Golang,主要是考虑到开发的模块,都需要接受瞬时大并发、请求需要经历多个步骤、处理时间较长、无法同步立即返回结果的场景,Golang的goroutine以及channel所提供的语言层级的特性,正好可以满足这方面的需要。 goroutine不同于thread,threads是操作系统中的对于一个独立运行实例的描述,不同操作系统,对于thread...阅读全文

阅读:38300 评论:5

Golang初学者学习资料大汇总

网站教程 GO语言编程 and GO语言开发2048 from 实验楼 Go语言后台应用开发 form 优才网 Go语言第一课 form 慕课网 入门书籍 《Go 入门指南》(《The Way to Go》中文版) 《Go 编程基础》 《学习 Go 语言》 《GO 标准库》: Polaris出品,一本有价值的入门书籍。 《Go Web 编程》 《Go并发编程实战》 and 《Go命令教程》由@特价萝卜 出品。 视频资料 《Go编程基础》视频教程:由@Unknown 出品,与书籍配套。 《Go W...阅读全文

阅读:32368 评论:2

学习Golang的步骤建议

一、快速入门 通过快速入门可以宏观的了解Go相关知识。快速入门可以去学习 go-tour 国内可以访问的中文版的 go-tour 地址有下面一些: http://gotour.qizhanming.com/#1 也可以自行搭建 go-tour 的环境, 搭建方法参考: http://www.cnblogs.com/ghj1976/archive/2013/03/08/2949237.html https://github.com/meilihao/tour_book/blob/master/go...阅读全文

2015-05-29 14:46 ghj1976
阅读:15504 评论:1

记golang数据库查询封装的坑

前文 golang接触也有一段时间,项目中有用到web api,基本上就是post json格式的,本想用java来写,刚下手想到java太臃肿,各种繁琐。 觉得用golang小试一把,于是github一把,还是发现很多go rest 插件,选了一个https://github.com/ant0ine/go-json-rest 一根烟后,go-json-rest demo开始跑起来,使用curl命令模拟了一把,正确运行。 关于go-json-rest的使用,本文不做描述,官方文档有很详细的说明 ...阅读全文

2015-06-11 12:41 liuwenhan999
阅读:13262 评论:0

golang 高效字符串拼接

以下内容摘自许世伟《go语言程序设计》: 连接字符串使用" + "或者使用slice拼接,"这2个转换都不是无代价的" 虽然方便,但是使用+=操作符并不是在一个循环中往字符串末尾追加字符串最有效的方式,一个有效的方式是准备好一个字符串切片([]string),然后使用strings.Join()函数一次性将所有字符串串联起来。但是在go中还有一个更好的方法,其原理类似于java中的stringBuilder package main import ( "bytes" "fmt" ) func m...阅读全文

阅读:60950 评论:2

读取生产环境go语言的最佳实践展示

近期看了一篇关于go产品开发最佳实践的文章,go-in-procution。作者总结了他们在用go开发过程中的非常多实际经验,我们非常多事实上也用到了。鉴于此,这里就简单的写写读后感,兴许我也争取能将这篇文章翻译出来。后面我用soundcloud来指代原作者。开发环境在soundcloud,每一个人使用一个独立的GOPATH,而且在GOPATH直接依照go规定的代码路径方式clone代码。$ mkdir -p $GOPATH/src/github.com/soundcloud $ cd $GOP...阅读全文

2015-07-05 09:55 lcchuguo
阅读:2472 评论:0

go语言选择语句 switch case

根据传入条件的不同,选择语句会执行不同的语句。下面的例子根据传入的整型变量i的不同而打印不同的内容: switch i { case 0: fmt.Printf("0") case 1: fmt.Printf("1") case 2: fallthrough case 3: fmt.Printf("3") case 4, 5, 6: fmt.Printf("4, 5, 6") default: fmt.Printf("Default") } 运行上面的案例,将会得到如下结果:  i = 0时,...阅读全文

阅读:51753 评论:0

linux下安装Go

1 下载安装包 go1.5.linux-amd64.tar.gz 2 在linux下找一个目录进行解压 tar zxf go1.5.linux-amd64.tar.gz 3 编辑文件/etc/profile,在结尾添加 export GOROOT=/home/test/Go/go export PATH=$GOROOT/bin:$PATH export GOPATH=/home/test/Go/go-project 4 执行source /etc/profile,使修改生效 5 执行go ver...阅读全文

阅读:3189 评论:0

golang map to struct

map映射到结构体,这里只支持简单的数据类型,复杂的需要在拓展 package main import ( "errors" "fmt" "reflect" "strconv" "time" ) type User struct { Name string Age int8 Date time.Time } func main() { data := make(map[string]interface{}) data["Name"] = "张三" data["Age"] = 26 data["D...阅读全文

2015-09-29 15:26 别人说我名字很长
阅读:7823 评论:1