通学区块链系列-从go开始之数据类型与定义(一)

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

写在前面

通学智能合约系列第二卷,从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)

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值