A tour of Go (1) - Go语言基础知识
Wednesday, December 16, 2020
A tour of Go (1) - Go语言基础知识
1. Go语言简介
计算机软件经历了数十年的发展,形成了多种学术流派,有面向过程编程、面向对象编程、函数式编程、面向消息编程 等,这些思想究竟孰优孰劣,众说纷纭。
除了OOP外,近年出现了一些小众的编程哲学,Go 语言对这些思想亦有所吸收。例如,Go 语言接受了函数式编程的一些想法,支持匿名函数与闭包。再如,Go 语言接受了以Erlang语言为代表的面向消息编程思想,支持goroutine和通道,并推荐使用消息而不是共享内存来进行并发编程。总体来说,Go语言是一个非常现代化的语言,精小但非常强大。
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。对于高性能分布式系统 领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行 的支持,这对于游戏服务端的开发而言是再好不过了。
Go 语言的主要特性:
- 自动垃圾回收
- 更丰富的内置类型
- 函数多返回值
- 错误处理
- 匿名函数和闭包
- 类型和接口
- 并发编程
- 反射
- 语言交互性
2. 包
每个Go 程序都是由包构成的
程序由 main 包开始运行
package main
import (
"fmt"
)
func main(){ //这个 { 不能换行
fmt.Println("Hello World!")
}
3. 导入
此代码用圆括号组合了导入,这是“分组 ”形式的导入语句
import(
"fmt"
"math"
)
4. 导出名
在 Go 中,如果一个名字以大写字母 开头,那么它就是已导出的。
例如,Pi 就是个已导出名,它导出自math 包。
在导入一个包时,你只能引用其中已导出的名字。任何未导出的名字在该包外均无法访问
5. 函数
函数可以没有参数 或接受多个参数,注意,类型在变量名之后。
func add(x int, y int) int {
return x + y
}
当连续两个或多个函数的已命名形参类型相同时,除最后一个类型以外,其它都可以省略。
func add(x, y int) int {
return x + y
}
多值返回:函数可以返回任意数量的返回值,需要定义类型
func swap(x, y string) (string, string){
return y, x
}
Go 的返回值可被命名,它们会被视作定义在函数顶部的变量。
返回值的名称应当有一定的意义,它可以作为文档使用。
适用于端函数,长函数会影响代码可读性
func split (sum int) (x, y int){
x = sum * 4 / 9
y = sum - x
return
}
6. 变量
var 语句用于声明一个变量列表,跟函数的参数列表一样,类型在最后。
变量名由字母、数字、下划线组成,其中首个字符不能为数字。
var c, python, java bool
var i int
如果初始化值已存在,则可以省略类型;变量会从初始值中获得类型。
var c, python, java = true, false, "no"
在函数中,简介赋值语句 := 可以在类型明确的地方代替 var 声明。
func main(){
k := 3
l := "no"
}
函数外的每个语句都必须以关键字开始(var, func 等),因此 := 结构不能在函数外使用。
同导入语句语句一样,变量声明也可以“分组 ”成一个语法块。
var( //这种因式分解关键字的写法一般用于声明全局变量
ToBe bool = false
MaxInt unit64 = 1<<64 - 1
z complex128 = cmplx.Sqrt(-5 + 12i)
)
基本类型包括:int=0,``bool=false,string="",float32(64)`等。
7. 类型转换
与 C语言 不同的是,Go 在不同类型的项之间赋值时需要显式转换。
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
8. 常量
常量的声明与变量类似,只不过是使用 const 关键字。
const Pi = 3.14
常量可以是字符,字符串,布尔值或数值。
常量不能用 := 语法声明。
浙公网安备 33010602011771号