以太坊客户端是用Go语言写的,所以首先要学会Go语言。
目前为止看到的最好的教程是下面这个网站:https://tour.golang.org
花上一天时间学习,Go语言的方方面面基本上心里就有数了。教程中间还穿插了几个练习题,比较有意思,摘出来汇总到这篇文章里。
1. fibonacci的三种写法
孔乙己的“回”字有三种写法,教程里也有三种不同的生成fibonacci数列的方法。
第一种:使用函数闭包实现,相比Java/C/C++,代码非常简洁
func fibonacci() func() int {
x, y := 1, 0
return func() int {
x, y = y, x+y
return x
}
}
func main() {
f := fibonacci()
for i := 0; i < 10; i++ {
fmt.Println(f())
}
}
第二种:使用channel实现,也就是把所有结果先送到channel中,然后再依次读出来
func fibonacci2(n int, c chan int) {
x, y := 1, 0
for i := 0; i < n; i++ {
x, y = y, x+y
c <- x
}
close(c)
}
func main() {
c := make(chan int, 10)
go fibonacci2(cap(c), c)
for v := range c {
fmt.Println(v)
}
}
第三种:使用select方式实现,其实还是使用channel,只不过是用select来监测channel的状态
func fibonacci3(c, quit chan int) {
x, y := 0, 1
for {
select {
case c <- x:
x, y = y, x+y
case <-quit:
fmt.Println("quit")
return
}
}
}
func main() {
c := make(chan int)
quit := make(chan int)
go func() {
for i := 0; i < 10; i++ {
fmt