初识 go 语言
前言: 最近组内要试水区块链,初步方案定为使用fabirc来弄,而fabric的智能合约就是用go写的,借此机会正好学下go,本文也是从零开始,将go的基本语法,结构体,函数,方法,接口,并发等以小demo的方式进行讲解,有的地方会对比java加深记忆
go简介
go又称golang 是由Google开发,于2009年11月开源的一种服务端编程语言,go 很简洁,高效,支持并发 ,总之值得一看—— 维基百科
安装
- go环境: go官网下载 安装就是一路next
- ide: liteIDE官网下载 我用的是 liteIDE ,下载压缩包之后直接解压使用,怎么用就自己学习下很简单的
hello world
学习每种编程语言都是从hello world开始的,本次也是
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
直接在ide中运行输出:hello world
一个.go文件通常会包括
- 声明包: package
- 引入包: import
- 变量/常量: var /const
- 函数: func
声明包
使用 packge 关键字来声明一个包,每个 Go 程序都由包构成的
引入包
使用 import 关键字来导入所需的包,go语言强制规定,导入的包必须被使用否则编译不过
import "fmt"
import "math"
//更简便的写法
import (
"fmt"
"math"
)
函数
使用 func 关键字来声明一个函数
常用结构:
func methodName(var1 int,var2 int) int{
.....
return xxx
}
注意:与java不同的地方
- 入参的结构:变量名在前,类型在后,如(var1 int,var2 int)
java是类型在前,变量名在后 - 返回值:函数的返回值在参数的后面
java中是在方法名之前
一个.go只能声明一个main函数,否则编译不过
helloworld demo 的main函数没有入参也没有返回值,所以可以省略
变量
使用 var 声明一个变量列表,跟函数的参数列表一样,类型在最后;
var 也是可以定在包内和函数内;
如果定义的变量没有赋值则默认赋初始值:
- 数值类型为 0
- 布尔类型为 false
- 字符串为 ""
var isfalse bool
var istrue bool = true
func main() {
var num int
fmt.Println(num, isfalse, istrue)
}
定义多个及初始值
如果初始化值已存在,则可以省略类型;变量会从初始值中获得类型
var isfalse, istrue, x = true, false, "chenmingyu"
func main() {
fmt.Println(isfalse, istrue, x)
}
当两个或多个变量类型相同时,只需要写最后一个变量的类型,如:x int, y int 可以写成 x, y int
函数中,简洁赋值语句 := 可在类型明确的地方代替 var 声明,只能在函数内使用,所以函数外只能用var
func main() {
var1 := "mingyu"
fmt.Println("say hello", var1)
}
常量
使用const 关键字来声明常量,如:
const word = "hello go"
func main() {
fmt.Println(word)
}
函数的返回值
go 语言函数支持返回任意数量的返回值,如:
func transform(x, y string) (string, string) {
return y, x
}
func main() {
a, b := transform("say", "hello")
fmt.Println(a, b)
}
可见性规则
在go中使用首字母大小写来决定该常量、变量、结构体、函数、接口是否可以被外部包调用
- 首字母小写就相当于java中的 private
- 首字母大写就相当于java中的 public
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Abs(12))
//小写报错 undefined: math.abs
fmt.Println(math.abs(12))
}
###结束
**初识 go 语言系列**
- [x] 初始 go 语言
- [ ] 初识 go 语言:语法及类型
- [ ] 初识 go 语言:方法,接口及并发
注意:本篇文中针对go环境的安装及ide的安装提供了网址,下载后可自行安装,liteIDE的使用可以自行学习很简单的
学习一门新的编程语言。最重要的就是写,看三遍不如自己码一遍,所以开始吧
学习网站:https://tour.go-zh.org
关注公众号
初识 go 语言的更多相关文章
- 初识 go 语言:方法,接口及并发
目录 方法,接口及并发 方法 接口 并发 信道 结束语 前言: go语言的第四篇文章,主要讲述go语言中的方法,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示例,可直接运行. 方法,接 ...
- 初识 go 语言:数据类型
目录 数据类型 指针 结构体 数组 切片 切片的方法 映射 函数闭包 结束语 前言: go语言的第三篇文章,主要讲述go语言中的数据类型,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示 ...
- 初识 go 语言:语法
目录 语法 for 循环 if 语句 switch 语句 defer 语句 defer 栈 结束 前言: go语言系列第二篇,主要讲述go语言的语法,如循环,if判断,swich语句,defer语句, ...
- 《Go并发编程实战》读书笔记-初识Go语言
<Go并发编程实战>读书笔记-初识Go语言 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在讲解怎样用Go语言之前,我们先介绍Go语言的特性,基础概念和标准命令. 一. ...
- 第二百五十八节,Tornado框架-逻辑处理get()方法和post()方法,初识模板语言
Tornado框架-逻辑处理get()方法和post()方法,初识模板语言 Tornado框架,逻辑处理里的get()方法,和post()方法 get()方法,处理get方式的请求post()方法,处 ...
- 01_初识C语言
第一章 - 初识C语言 基本了解C语言的基础知识,对C语言有一个大概的认识. 每个知识点就是简单认识,不做详细讲解. 1. 什么是C语言? C语言是一门通用计算机编程语言,广泛应用于底层开发.C语言的 ...
- 《玩转D语言系列》一、通过四个版本的 Hello Word 初识D语言
对于D语言,相信很多朋友还没听说过,因为它还不够流行,跟出自名门的一些语言比起来也没有名气,不过这并不影响我对它的偏爱,我就是这样的一种人,我喜欢的女孩子一定是知己型,而不会因为她外表,出身,学历,工 ...
- 第一、初识C语言
1·C语言强大而灵活,如python,LISP,FORTRAN,Perl,Logo,BASIC,PASACAL的编译器和解释器都是C语言编写的. 2·C语言的指针错误往往难以察觉,但这恰好告诉我们,一 ...
- 初识C语言
C语言是开发iOS软件的基础. 一.C语言简介 1. 简史 1) C语言于1972年发明,首次使用是用于重写UINX操作系统(UNIX以前主要是用汇编语言写的,它奠定了操作 ...
随机推荐
- SQLServer之删除视图
删除视图注意事项 删除视图时,将从系统目录中删除视图的定义和有关视图的其他信息. 还将删除视图的所有权限. 使用 DROP TABLE 删除的表上的任何视图都必须使用 DROP VIEW 显式删除. ...
- codeforces#410C Mike and gcd problem
题目:Mike and gcd problem 题意:给一个序列a1到an ,如果gcd(a1,a2,...an)≠1,给一种操作,可以使ai和ai+1分别变为(ai+ai+1)和(ai-ai+1); ...
- SQLServer数据事务日志操作
日志备份 (log backup) 包括以前日志备份中未备份的所有日志记录的事务日志备份. (完整恢复模式) 使用SSMS数据库管理工具备份事务日志 1.连接数据库,选择数据库->右键点击-&g ...
- mysql创建唯一索引,避免数据重复插入
多台服务器使用一个数据库时,有时就会出现重复插入的情况,eg:people表中的姓名和身份证号 此时可以给姓名和身份证号创建唯一索引, 创建语句:alter table people add uniq ...
- HBase 数据模型
在HBase中,数据是存储在有行有列的表格中.这是与关系型数据库重复的术语,并不是有用的类比.相反,HBase可以被认为是一个多维度的映射. HBase数据模型术语 Table(表格) 一个HBase ...
- Linux 进入 5.0 时代!
Linux 进入 5.0 时代! 为什么 Linux 4.2 之后的版本不再是 4.21 而是 5.0? 如果你非要一个理由,那就是因为 Linux 4.x 的版本如今用手指与脚趾加在一起都要数不过来 ...
- 好程序员web前端分享18个用CSS制作出来的东西
好程序员web前端分享18个用CSS制作出来的东西,与流行的看法相反,CSS不仅仅是用来提供一个WEB页面的基本风格,以使它看起来更有吸引力.还有很多其他的事情,CSS也可以做的很好.由于它创建动画和 ...
- python3 random模块
import random '''随机获取从0-1之间的小数'''print(random.random())print(format(random.random(), ".2f" ...
- 基于微服务的DevOps落地指南 交付效率提升40%
基于微服务的DevOps落地指南 交付效率提升40% 2015-2016年,珍爱线下门店已新增覆盖城市9个,与此同时,CRM系统大小故障却发生了数十起... ... 珍爱网是以“网络征选+人工红娘”模 ...
- [Alpha阶段]第四次Scrum Meeting
Scrum Meeting博客目录 [Alpha阶段]第四次Scrum Meeting 基本信息 名称 时间 地点 时长 第四次Scrum Meeting 19/04/08 大运村寝室6楼 50min ...