首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编程语言-go语言简介

区块链项目很多用go语言实现。go语言语法简单,并发性好。看go语言写的区块链项目,比其他语言写的区块链项目,逻辑上清晰多了。就以以太坊为例,go语言的版本,比cpp的版本,代码逻辑更清晰(大量的并发,以及网络通讯逻辑被go语言本身实现)。

熟悉C语言的朋友,看go语言代码非常容易,很容易上手。

想快速入门go语言的朋友,可以参考github上的一个go语言入门手册:

https://github.com/a8m/go-lang-cheat-sheet

go语言详细介绍可以参看官方网站:https://golang.org/。

总的来说,一个go语言的代码如下:

packagemain

import"fmt"

funcmain() { fmt.Println("Hello Go")}

package说明代码的域,import引入其他代码,main函数是程序执行的入口。

几个和C语言不一样的地方,列举一下:

*)执行语句不用;结束

*)原生类型

*)申明的变量类型在变量名称之后,比如:

varfooint

varfooint=42

*)函数可以返回多个输出

funcreturnMulti() (int,string)

{

return42,"foobar"

}

比如上图中的代码,同时返回一个int以及一个字符串。

*)if/for/switch几乎和c语言语法一致

*)数组和slice,slice的数据长度不定

vara[10]int //数组,10个int类型

vara= []int{1,2,3,4} //slice,初始为4个元素

数组或者slice的枚举如下:

fori,e:=rangea {

//i是序号, e是元素

}

*)没有对象,只有struct和interface

typeVertexstruct{X,Yint}

stuct可以有函数,函数必须在函数名前指明struct的名称:

func(vVertex)Abs()float64{

returnmath.Sqrt(v.X*v.X+ v.Y*v.Y)}

*)并发性相关:goroutines以及channels

goroutines是go语言实现的轻量级的多线程:

//just a function (which can be later started as a goroutine)

funcdoStuff(sstring) {}

funcmain() {//using a named function in a goroutinegodoStuff("foobar")//using an anonymous inner function in a goroutinegofunc(xint) {//function body goes here}(42)}

channels是go语言的一个核心类型,可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯。

ch:=make(chanint)//create a channel of type int

ch

v:=

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180422G0BFYV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券