目录
写在前面
Go 语言是一门开源语言,能够轻松的构建简单,可靠,高效的软件。—— Golang
为什么笔者在深入学习java和python以后任然坚持使用golang,因为每个语言的特性不一样,其适应的场合也不尽相同。毕竟大家时间都这么宝贵,何必不用最合适的语言做最合适的事情,个中滋味自己体会。下面就快速把go语言的特性再次总结一下。方便复习或者入门
基础总结
- Golang由包组成。Golang编译器将main包编译为可执行文件,而非共享库。main包是应用的入口,通常被定义如下
package main
- 语言第一波helloworld,新建main.go文件如下;fmt是Go内置的格式化I/O函数。
package main
import (
"fmt"
)
func main(){
fmt.Println("Hello World!")
}
编译
main.go, 编译完成会生成一个main的可执行文件
go build main.go
运行
main文件
./main
或者
go run main.go
变量
- 强类型变量,int 为例,这里默认为0
var a int
- 变量赋值
var a = 1
- 变量赋值简化
message := "hello world"
- 多变量同时赋值
var b, c int = 2, 3
数据类型
NUMBER,STRING, BOOLEAN
int 的类型有 int, int8, int16, int32, int64, unit, unit8, unit16, unit 32, unit64, unitptr…
bool 关键字表示布尔类型。
Golang 也支持复数,用conplex64和complex128表示。
var a bool = true
vat b int = 1
var c string = "hello world"
var d float32 = 1.222
var x complex128 = cmplx.Sqrt(-5 +12i)
ARRAYS,SLICES,MAPS
Array
是同类型元素的数组。Array在声明的时候会指定长度且不能改变。定义一个固定长度为3的数组:
var a[3] int
多维数组定义
var multiD [2][3]int
Slices
是能随时扩容的同类型元素的序列 。Slice的声明方式如下定义一个长度为0 的slices:
var b []int
或者定义一个有容量和长度的,长度为5,容量为10。
numbers := make([]int, 5, 10)
Slice是数组的封装,其内部实现是数组,slice有三个元素,容量,长度和指向内部数组的指针。
Slice的容量可以通过append 或者 copy函数增加。Append函数也能在数组的末尾添加元素,在容量不足的情况下会对slice扩容。
如下
numbers = append(numbers, 1, 2, 3, 4)
另一种增加slice容量的方式是使用copy函数。Copy函数的原理是创建一个新的大容量的slice,并把原有的slice拷贝到新的slice中。
number2 := make([]int, 15)
copy(number2, number)
基于一个slice创建一个子slice
package main
import (
"fmt"
)
func main() {
// 初始化slice
number2 := []int{
1, 2, 3, 4}
fmt.Println(number2) // -> [1 2 3 4]
// 创建子slice
slice1 := number2[2:]
fmt.Println(slice1) // -> [3 4]
slice2 := number2[:3]
fmt.Println(slice2) // -> [1 2 3]
slice3 := number2[1:4]
fmt.Println(slice3) // -> [2 3 4]
}
map 键值对的定义
var m map[string]int
我们来创建一个key是string value是int的例子
package main
import (
"fmt"
)
func main() {
m := make(map[string]int)
// 添加键值对
m["clearity"] = 2
m["simplicity"] = 3
// 打印值
fmt.Println(m["clearity"]) // -> 2
fmt.Println(m["simplicity"]) // -> 3
}
类型转换
使用类型转换来转变一个数据类型
package main
import (
"fmt"
)
func increment(i *int) {
*i++
}
func main() {
a := 1.1
b := int(a)
fmt.Println(b)
//-> 1
}
同时我们可以使用如下两种方法来查看相关类型,具体原理后续我们在仔细理解
<