Go语言基础
Go程序的组成
Go的代码通过包(package)组织,一个包由多个源码文件组成(.go文件)
每个源代码文件,都由package package_name
声明语句起始,表示文件位于哪个包,main
包定义一个独立可执行的程序,其内部的main
函数是程序的入口
之后是导入依赖包(import package_name
)
第三部分是源代码
hello,world!
package main // 声明所属包
import "fmt" // 导入fmt包
// main函数,使用func关键字声明函数
func main() { // 花括号必须与函数定义语句在同一行,if、switch、for等语句的花括号同样如此,这一点与C的代码风格迥异,类似Java
fmt.Println("hello, world!") // 使用了fmt包中的一个标准输出函数
}
goimports
工具可以根据代码需要,自动地添加和删除import
声明
go get golang.org/x/tools/cmd/goimports
基础语法
分号的问题
Go虽然不需要在语句末尾添加分号,实际上编译器会把特定符号后的换行符转换为分号,因此换行符的添加位置会影响Go代码的正确编译
如果行末是标识符、整数、浮点数、虚数、字符或字符串文字、关键字 break
、continue
、fallthrough
或 return
中的一个、运算符和分隔符 ++
、--
、)
、]
或 }
中的一个,如果在他们后面加换行符,则有可能会出错
Go命名风格
任何命名都要符合这个规则:以字母或下划线开头,后面可以有任意数量的字母、数字、下划线。
推荐使用驼峰式命名
声明
声明变量
var varName int32 = 1 + 6 / 3
varName := 222 // 简短声明,用于初始化和声明局部变量,类型根据表达式自动推导
var
是声明变量的关键字,varName
为变量名,int32
为变量类型,可省略,省略时编译器将会自行判断变量类型
数值类型零值为0,布尔类型零值为false
,字符串类型零值为空串,接口和引用类型的零值为nil
,数组等聚合类型零值为其元素类型对应零值
package main
import "fmt"
func main() {
var helloStr string = "hello, world!"
println(helloStr)
shortStr := "short defination:string"
fmt.Println(shortStr)
shortFloat := 10 + 0.1
fmt.Println(shortFloat)
var str string
fmt.Println(str) // 输出一个空串
var intval int32
fmt.Println(intval) // 输出0
var floatVal float64
fmt.Println(floatVal)
var boolVal bool
fmt.Println(boolVal) // 输出False
}
声明常量
const conNmae
声明类型
type
声明函数
func funcName(f float32, d float64) int32 {
return 4
}
其中func
为声明函数的关键字,fucName
为函数名,f float32, d float64
为形参列表,int32
为返回值列表
作用域
如果一个常量、变量在包内声明,那么这个常量、变量的作用范围是整个包,包内的任何源文件都可以访问
如果一个常量、变量在函数内声明,那么这个常量、变量的作用范围是这个函数内部,其他函数和包都不可以访问