Learning Go - 1 basic
教程 tour of golang
1. 包
package main // Go程序都是由包组成的,入口是包main
import ( // 更好的 打包导入,也可以分开写
"fmt"
"math/rand" // 包名与导入路径的最后一个目录一致,即rand
)
func main () {
rand . Seed ( 5 ) // 首字母大写的名称是被导出的, seed报错不允许导出
fmt . Println ( "My favorite number is" , rand . Intn ( 10 )) // 逗号 自带空格
}
2. 函数
// 类型 在变量名 之后,且可以省略前边相同的类型
// 函数可以返回 任意数量的返回值
func swap ( x , y string ) ( string , string ) { //func关键字必须有!
return y , x
}
// 返回值可以被命名,并且像变量那样使用
func split ( sum int ) ( x int , y int ) {
x = sum * 4 / 9
y = sum - x
return // 没有参数的 return 语句返回结果的当前值。也就是`直接`返回 return x, y
}
func main () {
a , b := swap ( "hello" , "world" )
fmt . Println ( a , b )
fmt . Println ( split ( 17 ))
}
3. 变量
var c , python bool // 变量列表,类型在后,必须有类型
var a , b = 3 , 4 // 可以初始化,有且只有 每个变量对应一个,类型可以不写(编译器推导出来了)
func main () {
var i int // var的作用范围:函数内或外边的包内
var s string
fmt . Println ( i , c , python , s ) // 默认值:0 false false ""
x := "no!" // := 简洁赋值语句,用于替代 var 定义; := 不能在函数外用
var f float64 = math . Sqrt ( float64 ( x * x + y * y ))
x = int ( f ) // 不同类型之间的项目赋值需要显式转换,删掉int报错
}
4. 基本类型
Basic types:
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr //The int, uint, and uintptr types are usually 32 bits wide on 32-bit systems and 64 bits wide on 64-bit systems. 一般就使用int即可
byte // uint8 的别名
rune // int32 的别名,代表一个Unicode码
float32 float64
complex64 complex128
var ( // 变量的定义也可以“打包”在一个语法块中。
ToBe = false
MaxInt uint64 = 1 << 64 - 1
z complex128 = cmplx . Sqrt ( - 5 + 12i )
)
func main () {
const f = "%T (%v) \n " // printf函数,格式可以存成 const常量
fmt . Printf ( f , ToBe , ToBe ) // bool (false)
fmt . Printf ( f , MaxInt , MaxInt ) // uint64 (18446744073709551615)
fmt . Printf ( f , z , z ) // complex128 ((2+3i))
}