go语言基础
学习地址:
GO指南:https://tour.go-zh.org/list
GO编程基础视频课程:https://learnku.com/docs/go-fundamental-programming
GO标准库文档:https://pkg.go.dev/std
包
- 程序最前面引入main包: package main
- 导入包的格式:
import (
包路径1
包路径2 …
)
导入多个包时可以通过import()这种分组的形式,在()内写多个路径,也可以写多个import 路径,就像python那样。但分组的形式更好 - 在引用所导入的包中的变量时,首字母大写的表示已导出的,就是说包中已定义好的变量在调用时首字母必须大写。
- (已导入的包必须调用,否则会报错?)
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println("My favorite number is", rand.Intn(10))
}
函数
- 参数个数:没有或多个,和其他语言的定义差不多
- 参数的类型在变量名称之后:x int, y int,若连续多个参数的类型一样,则可以只写最后一个参数的类型,比如上面的两个参数可以写成x, y int。
- 返回值类型在方法名称定义之后,有点像C#?而且如果有返回值必须在函数参数之后标明返回值类型,有几个返回值就标明几个返回值类型
- 直接返回:return后不接任何内容,但需要在函数声明之后命名返回值,在函数体中直接使用,最终return的就是这些一开始在前面命名的返回值(有点像定义在函数体之外的局部变量)
package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
变量
- var声明变量,并在变量名称之后声明变量的类型
- Int类型变量的默认值为0,bool 类型变量的默认值为false
- 变量初始化,声明几个变量就对应的初始化几个值,在声明变量的同时初始化时可以不声明变量的类型,比如var i, j = 1, 2,其中i,j可以不用在后面声明类型
- 短变量声明:不使用var声明使用赋值语句:=声明变量,比如x := 1,就说明声明了一个名为x的变量赋值为1,但是这种短变量声明只能用在函数体内部,不能用在函数外,函数外的变量都必须以var关键字声明。
package main
import "fmt"
var c, python, java bool
func main() {
var i int
fmt.Println(i, c, python, java)
}
基本类型
- int, uint(具体大小跟随机器,32位系统上为32位宽,64位系统上为64位宽),int8,int16,int32,int64
- uint,uint8,uint16,uint32,uint64,uintptr
- byte(uint8的别名)
- rune(int32的别名,表示一个unicode码点?不懂)
- float32,float64
- complex64,complex128(复数)
- 零值,没有明确初始化的变量被赋成零值,数值类型的零值为0,布尔类型为false,字符串类型为“”
- 类型转换,必须显示进行类型转换,直接将一种类型的值赋给另一种类型的变量会报错,需要显示的将右边的值的类型转换成和左边一样的类型。
- 常量:const声明,常量不能用赋值语句声明
- 数值常量:高精度的值
package main
import (
"fmt"
"math"
)
func main() {
var x, y int = 3, 4
var f float64 = math.Sqrt(float64(x*x + y*y))
var z uint = uint(f)
fmt.Println(x, y, z)
}