通学技术,学通技术,面向区块链编程,构建可信社会。


写在前面

通学智能合约系列第二卷,从go开始。

距离我上次写智能合约方面的文章,已经过去了3个月了,这期间,我探索了很多赚钱的副业,但是发现所谓的躺赚就是一个悖论。天下没有免费的午餐,自此,醉心于技术,醉心于区块链,醉心于区块链项目落地,将是我毕生的追求与热情所在。接下来,让我们一起遨游区块链的海洋吧。

前几篇文章,将是我对go语言的一个复习,而后我们便投身于如何用go语言来实现钱包、go语言来实现共识算法等,一步步带你深入区块链的内心世界,了解她,爱上她。

初识go

要说这个go也是厉害,是谷歌的大牛们真正利用了他们空余的20%时间开发出来的,而不像此刻的我,只能牺牲自己的晚上时间去写这篇文章。我也期待,在我们国内,真正的空余时间能够落实在实处。回归正题,go的核心开发者可是uninx操作系统,c语言的创造者,而且在写go语言的时候,已经60多岁了。看到这里,不禁唏嘘自己的浮躁。希望自己也能够像汤普逊~肯 大佬那样真正的活到老,学到老,热情到老。

另外还有几位大神级别的作者就不介绍了,什么UTF-8编码的缔造者,java HotSpot的书写者,随便拿出一个来都可以惊掉下巴。

要说go的应用,目前仍旧火热的云原生可少不了她,什么k8s,etcd,consul都是用go语言去实现的。

而在区块链方面,以太坊最流行的go-ethereum版本、超级账本Hyperledge Fabric也都都是go语言实现的。

闲话少说,我们直接上语法,关于简单的语法,我们这里不做过多介绍,主要可能看看与java不一样的地方。

一、数据类型与定义

1、不常见的基本类型

关于其他基本类型这里不做介绍

complex64 // 32位实数和虚数
complex128 // 64位实数和虚数

rune // 类似unit32
uintptr // 无符号整型 存放指针

2、自增长常量

go的这个自增常量比较有意思,当“=”执行后,会自行加一。大家可以输出下面的代码验证下自己心里的结果。

package main
// 自增长常量
import "fmt"

const (
// iota = 0
login = iota
logout
user = iota + 1
account = iota + 3
)

func main(){

fmt.Println(login)
fmt.Println(logout)
fmt.Println(user)
fmt.Println(account)
}

3、指针

作为c语言大佬的退休后的力作,go依然使用了指针,不过这里使用指针的本质只是为了间接赋值,仅此而已,不信你可以试试以下代码。

package main
//指针
import "fmt"

func main(){
var a int = 10
p := &a
*p = 100
fmt.Println(a,*p,p)

}

二、语句

学习语言,我们除了会词语以外,当然也得会语法结构怎么写,分支、循环可是少不了。

3、分支语句-if else

package main
// 条件语句
import "fmt"

func main(){
var a = 10

if a > 10 {
fmt.Println("a bigger than 10.")
}else if a < 10 {
fmt.Println("a les than 10.")
} else {
fmt.Println("a equal 10.")
}
}

4、分支语句 switch

package main

import "fmt"

// 标准输入
func main(){

var fruit string
fmt.Println("Please input a fruit's name:")
fmt.Scanf("%s",&fruit)
switch fruit {
case "apple":
fmt.Println("I want 2 apple.")
case "banana":
fmt.Println("I want 1 banana.")
default:
fmt.Println("Are u kidding me?")

}
}

5、循环语句

package main

import (
"fmt"
)

// 循环
func main(){
// 方式一 for循环
sum := 0

for i := 0; i < 100; i++{
sum += 1
}
fmt.Println("sum = ",sum)

// 方式二 while循环
j := 1

for j < 100 {
sum += j
j++
}
fmt.Println("sum = ",sum)

// 方式三 死循环
k := 1

for {
sum += k
k++
if k > 100 {
break
}
}
fmt.Println("sum = ",sum)

}

这节内容相对比较简单,有点编程基础的朋友应该都能看懂,有什么疑问可以给我留言交流哈