Go语言中文网 为您找到相关结果 3

golang的iota问题

通常人们认为iota就是0,其实并非如此。 确切的说,当iota在紧跟着关键字const的第一行出现时,iota为0,在第二行出现时,iota为1,以此类推;当iota再次遇到const时,重置为0. golang spec关于iota的说明:http://golang.org/ref/spec#Iota 下面来看几段代码吧。 1、例1 package main import "fmt" const i1 = iota const j1 = iota const k1 = iota func main() { fmt.Println("i1, j1, k1", i1, j1, k1) fmt.Println("Hello, playground") } http://play.golang....阅读全文

博文 2015-10-15 09:56:56 铁哥

Go语言的三个雷区

Go语言中有三个常犯的错误,我将他们以最容易犯的方式记下来。注意这里用的例子是最容易碰到的,而不是最容易理解的。 下面的例子都是在Kubernetes代码中的,而且据我所知,都不止一次地通过了代码审查。 1. 循环中变量的作用域问题 观察下面的代码,预测其功能是什么? func print(pi *int) { fmt.Println(*pi) } for i := 0; i < 10; i++ { defer fmt.Println(i) defer func(){ fmt.Println(i) }() defer func(i int){ fmt.Println(i) }(i) defer print(&i) go fmt.Println(i) go func(){ fmt.Printl...阅读全文

博文 2016-09-20 17:00:02 lintingte

Golang RabbitMQ学习笔记(2 : 实现工作队列)

***生产者*** ```go package main import ( "github.com/streadway/amqp" "log" ) func failOnError(err error, msg string) { if err != nil { log.Fatalf("%s: %s", msg, err) } } func main() { conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/") failOnError(err, "连接RabbitMQ失败") defer conn.Close() ch, err := conn.Channe...阅读全文