应用领域:
- 区块链(BT)应用:区块链是分布式的账本存储技术。特点是去中心化、公开透明并且不可篡改,每个人都可以参与数据库记录。
- 后端服务器应用
- 云计算/云服务后台应用
go语言的特点:
- 引入了垃圾回收机制(防止内存泄露)
- 并发处理
- 管道通信机制
- 有静态语言的安全和高性能,有动态语言的开发维护的高效率
- 函数可以有多个返回值
例. 实现返回两个值
func SumAndSub(n1 int,n2 int)(int,int){
sum := n1+n2
sub := n1-n2
return sum,sub
}
func SumAndSub(n1,n2 int)(sum int,sub int){
sum = n1+n2
sub = n1-n2
return
}
func SumAndSub()(sum int,sub int){
n1 := 2
n2 := 3
sum := n1+n2
sub := n1-n2
return sum,sub
}
注. 在go语言中不需要在代码后面加“;”,默认是自动加。数据类型写在变量之后。
主程序的写法:
package main
import “fmt”
func main(){
fmt.println()
}
func是关键字,表示一个函数,main是主函数,程序的入口。
go语言中的pakage需要是main,不然不能运行,fmt.println()是输出语句。
go语言的编译方法
- 源文件.go通过编译(go build)生成执行文件(.exe),再go run;
- 对源文件直接go run(一般不用,因为耗时较长)
区别:如果先编译生成了可执行文件,将该文件拷贝到没有go开发环境的机器上也可以运行。
常量/变量
const 常量(不可被重新赋值)
var 变量
可以一次性声明多个变量/常量,但是声明的变量都必须被使用,不然会报错
var/const{
a = 1
b = 2
c = 3
}
但是全局变量是允许声明但不使用的。 同一类型的多个变量可以声明在同一行,如:
var a, b, c int
多变量可以在同一行进行赋值,如:
var a, b int
var c string
a, b, c = 5, 7, "abc"
上面这行假设了变量 a,b 和 c 都已经被声明,否则的话应该这样使用:
a, b, c := 5, 7, "abc"
声明变量
- 指定变量类型,如果没有初始化,则变量默认为零值。
变量初始值:
• 数值类型(包括complex64/128)为 0
• 布尔类型为 false
• 字符串为 “”(空字符串)
例如:
// func main() {
// 声明一个变量并初始化
var a = "abc"
fmt.Println(a)
// 没有初始化就为零值
var b int
fmt.Println(b)
// bool 零值为 false
var c bool
fmt.Println(c)
}
- 根据值自行判定变量类型。
//func main() {
var a = 2
fmt.Println(a)
}
- 省略 var, 但是 := 左侧如果没有声明新的变量,就会产生编译错误
例如:
//var intVal int
intVal :=1 // 这时候会产生编译错误
intVal,intVal1 := 1,2 // 此时不会产生编译错误,因为有声明新的变量,因为 := 是一个声明语句
使用iota定义常量
iota的初始值为0,后面的自动延用排头兵表达式,且iota逐一增加
例.输出123
// const{
a1 = iota+1
a2
a3
fmt.Println(a1+a2+a3)
}
数据的基本类型
主要有整型、浮点型、布尔型、字符串。
其中,整型的int32=rune,相当于char,unit表示无符号int(无负),uint8=byte
占位符(使用占位符时,要使用格式化输出:fmt.Printf(“%T”,变量名))
%T 类型占位符
%v 值占位符(覆盖任何类型)
%c 字符占位符
%d 数字占位符
%f 浮点型占位符
%s 字符串占位符
例.
// func main(){
Var v1 = 123
Var v2 = ‘小’
fmt.Printf(“v1的类型是%T”,v1)
fmt.Printf(“v2的值是%v”,v2)
}