学习了一下Golang语言官网推荐的Go基础教程 - A Tour of Go,在此记录包,变量和方法部分的学习心得总结。
基础数据类型
Go中有以下基础数据类型:
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
其中int,uint和uintptr类型在32位(bit)机器上通常是32个比特(32bits,即4Bytes),在64位机器上通常是64比特(64bits,即8Bytes)。
可输出名称(Exported names)
先贴一段选取自A tour of go的代码片段:
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.pi)
}
每一个Go程序由包(package)组成,Go程序从名为main的包开始执行,package用于标示本文件所属的包。如以上代码中是package main,表示这段代码所属的包是main,正好是程序开始执行的包。
import用于导入外部的包,以上代码中用括号(parenthesis)括起来并一次性导入所有外部包的方法是工厂方法,也是官方推荐的方法。当然也可以不用括号,一行一行导入,类似这样(不推荐):
import "fmt"
import "math"
接下来要说到可输出名称,Go语言中以大写字母开头的名称是可输出的,也就是外部可以访问到的。比如执行以上代码就会出错:
tmp/sandbox307383146/main.go:9: cannot refer to unexported name math.pi
tmp/sandbox307383146/main.go:9: undefined: math.pi
这是因为pi以小写字母p开头,外部无法访问。如果pi改成Pi,则错误消失。
函数(Functions)
还是先贴一段A tour of Go的代码:
package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
函数可以没有参数,也可以有很多参数,以上代码中方法add有2个int型参数x,y,返回值是int型。和C语言解析(parse)声明(declaration)使用“顺时针/螺旋法则(Clockwise/Spiral Rule)”不同,Go使用从左到右的法则。所以,对于以上函数add,从左到右解析,即函数add传递参数int x和int y,并返回int。
注意,Go函数可以返回多个值,以,分隔,比如下面这段代码中方法swap返回2个字符串:
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("hello", "world")
fmt.Println(a, b)
}
如果仔细看swap的参数列表,会发现x后面没有数据类型string,这就是即将讨论的问题。
变量(variable)
go使用var声明变量:
var x int
var y int
以上可以合并成一行:
var x, y int
如果只是声明变量而不赋值的话,Go会自动给变量赋值为零值,即
0 for numeric types,
false for the boolean type, and
"" (the empty string) for strings.
如果还要初始化的话,可以这样写:
var x, y int = 1, 2
在函数内部(不能是函数外部,或者说包的内部),可以使用:=直接给一个变量赋值而不必声明变量的类型(go有隐式类型推断):
package main
import "fmt"
func main() {
var i, j int = 1, 2
k := 3
c, python, java := true, false, "no!"
fmt.Println(i, j, k, c, python, java)
}
不同类型变量间赋值操作时,必须使用显式类型转换。
常量
Go使用const关键字定义常量,定义在函数内或者函数外(包内)均可。注意,定义常量时不能使用:=
package main
import "fmt"
const Pi = 3.14
func main() {
const World = "世界"
fmt.Println("Hello", World)
fmt.Println("Happy", Pi, "Day")
const Truth = true
fmt.Println("Go rules?", Truth)
}
网友评论