原链接地址:http://lonewolf.me/content/2015/02/14/go-study-part1.html
原创博客,转载请注明。


最近在学习Go语言,按照学习指南学的,现把学习过程记录一下。

这一章学习包、变量和函数。

包定义都是在第一行,如:

package main

导入别的包则用import,如:

import "fmt"
import "math"

也可以这样:

import (
    "fmt"
    "math/rand"
)

如果你引入了一个包,但没有使用它,是没法编译通过的,出错信息如下: imported and not used: "math" 因为Go语言是静态编译,引入没有使用的包会增大最终执行文件的体积,所以Go强制这样做。

Go语言提供了很多的标准包,具体可以看看Go库文档(中文)。 >Go语言编译运行时(go run xxx.go),该文件里必须有main包和main函数才能运行。 > >Go语言语句结尾都没有分号;

函数

函数以func关键字定义,如下:

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

func swap(x, y string) (string, string) {
    return y, x
}

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

func main() {
    fmt.Println(add(42, 13))
    a, b := swap("hello", "world")
    fmt.Println(a, b)
    fmt.Println(split(17))
}
  • 参数的类型声明是放在变量名后面的。
  • 如果参数类型一样,除了最后一个要声明类型,之前的都可以省略。
  • 返回值的类型放在){之间,如果没有返回值,则为空。
  • 可以返回多个值,这时候返回的类型要用()包含起来。
  • 返回值可以被命名,return直接返回。
  • 函数main为主函数,一个项目里只有一个。

变量

变量以var关键字定义,类型声明放在后面,可以赋初始值。

var a int
var b bool
var c, d float64 = 2.5, 5.0

也可以这样定义:

func main() {
    k := 3
    c, d, e := false, 1, "hello"
}

这个时候变量的类型由右边给出的值来推断,但这种形式:=只能在函数内部使用

常量

常量以const关键字定义,如:

const Pi = 3.14

常量不能以:=定义。 常量的类型是由右边的值来推断。

基本类型

Go语言的基本类型有:

bool // 初始值 false

string // 初始值为""(空字符串)

int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr

byte // uint8 的别名

rune // int32 的别名
     // 代表一个Unicode码

float32 float64

complex64 complex128

数值类型的初始值是0

类型转换,Go中没有隐型的类型转换,所有的转换都需要显式的转换,如:

var i int= 42
var f float64 = float64(i)

或者:

i := 10
f := float64(i)

注释

Go可以这样注释:

/*
  这是注释
*/

也可以这样:

// 这是注释

好了,这一章就这样了,先学个基础。