Golang Basic
发现自己 go 基础不扎实,特地来学一遍。
Hello World
首先从 Hello World 开始:
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}
go 程序首先需要声明在哪个包中,使用 import
导入其他包。
可以用()
包裹来导入多个包:
import (
"fmt"
"math/rand"
)
// 当然你也可以这样:
import "fmt"
import "math"
导出
在 Go 中,如果一个名字以大写字母开头,那么它就是已导出的。例如,Pizza 就是个已导出名,Pi 也同样,它导出自 math 包。
在导入一个包时,你只能引用其中已导出的名字。任何“未导出”的名字在该包外均无法访问。
变量
Go 语言变量的类型需要放到变量名的后面
package main
import "fmt"
var a int
var b, c int = 1, 2
func main(){
d := 3 // := 结构不能在函数外使用
}
Go 语言的基本类型有:
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // uint8 的别名
rune // int32 的别名
// 表示一个 Unicode 码点
float32 float64
complex64 complex128
没有明确初始值的变量声明会被赋予它们的 零值。数值类型为 0,布尔类型为 false,字符串为 ""(空字符串)。
类型转换
表达式 T(v) 将值 v 转换为类型 T。
一些关于数值的转换:
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
或者,更加简单的形式:
i := 42
f := float64(i)
u := uint(f)
与 C 不同的是,Go 在不同类型的项之间赋值时需要显式转换。
类型推导
在声明一个变量而不指定其类型时(即使用不带类型的 := 语法或 var = 表达式语法),变量的类型由右值推导得出。
当右值声明了类型时,新变量的类型与其相同:
var i int
j := i // j 也是一个 int
不过当右边包含未指明类型的数值常量时,新变量的类型就可能是 int, float64 或 complex128 了,这取决于常量的精度:
i := 42 // int
f := 3.142 // float64
g := 0.867 + 0.5i // complex128