go语言学习(一)

##包

###包的导入方法1:

1
2
3
4
import (
"fmt"
"math"
)

###包的导入方法2:

1
2
import "fmt"
import "math"

作为 Pytonista, 更喜欢第 2 种方式 更加简洁.

##包的变量导出
Go 语言通过命名来确定该变量是否是可以导出到外部供别的包所使用.可以被导出的变量通过将变量名的首字母大写来标志确定.

##函数

###一个函数可以收 0 到任意多个参数. 接收的参数类型在参数名之后声明:

1
2
3
func add(x int, y int) int {
return x+y
}

如果一个函数接受的所有参数是同一个类型的时候, 那么可以不需要每一个参数都标明类型, 只需要在最后一个参数上标明类型就可以.

1
2
3
func add(x, y int){ #当多个参数是同一类型时, 可以省略只声明一次.
return x+y
}

###一个函数可以返回多个值

1
2
3
func swap(x, y int) int, int{
return y, x
}

###go也可以对返回变量命名

1
2
3
4
func split(sum int) (x, y int){
x = sum * 4 / 9
y = sum - x
}

##变量

###变量声明
go 通过 var 关键字来声明变量, 和函数参数声明一致, 变量类型在变量名之后声明:

1
2
var i int
var c, python, java bool #三个值都为bool类型

###变量初始化
变量可以在声明的时候立刻初始化:

1
2
var i, j int = 1, 2
var c, python, java = true, false, "no!"

###短变量声明
短变量声明是一个特殊的使用方法, 有以下特点:

  • 只能在函数内部使用
  • 不需要var关键字和类型
  • 类型通过赋值时隐式声明
    1
    2
    3
    4
    5
    func main(){
    var i, j int = 1, 2
    k := 3
    c, python, java = true, false, "No!"
    }

###变量类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool

string

int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr

byte // alias for uint8

rune // alias for int32
// represents a Unicode code point

float32 float64

complex64 complex128

###常量
常量只能使用const关键字生成

1
const Pi = 3.14