长安链 DApp 开发必学 Go 01

760 阅读2分钟

本文已参与「开源摘星计划」,欢迎正在阅读的你加入。

活动链接:github.com/weopenproje…

长安链近期推出了“长安链开放测试网络”,顺便出了一个DApp征集的活动,链接

所以,开个支线任务,记录一次从零开始的完整的DApp开发流程。

根据官方文档

“长安链·ChainMaker”官方当前推荐的合约编程语言依次为Golang、Rust、Solidity、TinyGo和C++。其中Golang合约编程限制少(除开发注意事项中的限制外,可以使用所有Go语言的特性),运行时环境DockerGo虚拟机也是长安链自研的支持微服务化部署的高性能虚拟机,为第一推荐编程语言。

而且官方展示的存证应用示例,合约开发语言选用的是go,所以本实战也选用go语言。

这里先放一下go官方教程,方便没接触过go的小伙伴学习,也可以跟着本实战学习。

本文简单介绍下go的基础语法,首先开启新世界的大门:

package main

import "fmt"

func main() {
    fmt.Println("Hello, 世界")
}

该段代码先声明了main这个包package,然后导入(import)了fmt这个包。在主函数,也就是入口函数main里,调用fmtPrintln方法,在控制台打印输出Hello, 世界

func add(x int, y int) int {
    return x + y
}

定义了一个计算加法的函数,跟C语言类似,需要声明参数的类型,以及返回值的类型。特别的,这里的类型声明是在变量之后的。这里补充下,go是一门静态编译型的语言,所以需要提前声明好变量、参数的类型。

var a string
var i, j int = 1, 2
var c, python, jave = true, false, "no!"
k := 3

通过关键字var来声明变量,如果没有初始值,必须声明变量的类型。有初始值的话,变量类型可以不声明,编译器会自动根据初始值给予类型。也可以使用:=这个语法糖来省略var快速声明变量。

const Pi = 3.14
const World = "世界"
const Truth = true
const (
    Big = 1 << 100
    Small = Big >> 99
)

关键字const可以声明常量,常量不能重新赋值。

总结下,上面介绍了go的包、函数、变量、常量等,已经可以写一些简单的函数进行计算并打印输出。

如果需要实现更复杂的逻辑,就需要循环、条件等语法的支持,下一章会介绍。