一、变量定义方法
-
var 定义变量
var name string = "Snail"
var age int =21
var isOK bool bool
2.类型推导方式定义变量
- a 在函数内部,可以使用更简略的:= 方式声明并初始化变量
- **注意:**短变量只能用于声明局部变量,不能用于全局变量的声明
// 变量名 :=表达式
n := 10
var age = 18
3.一次定义多个变量
package main
import "fmt"
func main(){
var username ,sex string
username = "蜗牛"
sex = "男"
fmt.Println(username, sex)
}
4.批量声明变量
package main
import "fmt"
func main(){
var (
a string
b int
c bool
)
a = "蜗牛"
b = 10
c = true
fmt.PrintIn(a,b,c)
}
二、常量定义
- 声明了 pi 和 e 这两个常量之后,在整个程序运行期间它们的值都不能在发生变化了
const pi = 3.1415
const e = 2.7182
//多个常量也可以一起声明
const (
pi = 3.1415
e = 2.7182
)
- const同时声明多个常量时,如果省略了值啧表示和上面一行的值相同
const(
n1 = 100
n2
n3
)
// 上面示例中,常量n1、n2、n3的值都是 100
三、fmt 包
- PrintIn:
- 一次输入多个值的时候 PrintIn 中间有空格
- PrintIn 会自动换行,Print 不会
- Print:
- 一次输入多个值的时候 Print 中间没有空格
- Print 不会自动换行
- Printf
- Printf 是格式化输出,在很多场景在比 PrintIn 更方便
Package main
import "fmt"
func main() {
fmt.Print("蜗牛","白河车","pupu") //蜗牛白河车pupu
fmt.PrintIn("蜗牛","白河车","pupu") //蜗牛 白河车 pupu
name := "蜗牛"
age := 21
fmt.Printf("%s 今年 %d 岁",name,age) //蜗牛 今年 21 岁
}
四、 init 函数和 main 函数
1.init 函数
- go 语言中 init 函数用于包(package)的初始化,该函数是 go 语言的一个重要特性
- 有下面的特征:
- init 函数是用于程序执行前做包的初始化函数,比如初始化包里的变量等
- 每个包可以拥有多个 init 函数
- 包的每个源文件也可以拥有多个 init 函数
- 同一个包中多个 init 函数的执行顺序 go 语言没有明确的定义(说明)
- 不同包的 init 函数按照包导入的依赖关系决定该初始化函数的执行顺序
- init 函数不能被其他函数调用,而是在 main函数执行之前,自动被调用
2.main 函数
//Go 语言程序的默认入口函数(主函数):func main()
//函数体用{}一对括号包裹
fun main(){
//函数体
}
3.init 函数和 main 函数的异同
- 相同点:
- 两个函数在定义时不能有任何的参数和返回值,且 Go 程序自动调用
- 不同点:
- init 可以应用于任意包中,且可以重复定义多个
- main 函数只能用于用于 main 包中,且只能定义一个
- 两个函数的执行顺序:
- 对同一个 go 文件的 init()调用顺序是从上到下的
- 对同一个 package 中不同文件是按文件名字符串比较“从小到大”顺序调用各文件中的 init 函数
- 对不同的 package,如果不相互依赖的话,按照 main 包中先 import 的后调用的顺序调用其包中的 init()
- 如果 package 存在依赖,则先调用最早被依赖的 package 中 init(),最后调用 main 函数
- 如果 init 函数中使用了 printIn()或者 print()你会发现在执行过程中这两个不会按照你想象中的顺序执行
- 这两个函数官方只推荐在测试环境中使用
4.init() 函数介绍
- 在 Go 语言程序执行时导入包语句会自动触发包内部 init()函数的调用
- 需要注意的是:init()函数没有参数也没有返回值
- init()函数在程序运行时自动被调用执行,不能在代码中主动调用它
- 包初始化执行的顺序入下图所示:
五、命令
- go env 用于打印 Go 语言的环境信息
- go run命令可以编译并运行命令源码文件
- go get 可以根据要求和实际情况从互联网上下载货更新指定的代码包及其依赖包,并对它们进行编译和安装
- go build 命令用于编译我们指定的源码文件货代码包以及它们的依赖包
- go install用于编译并安装指定的代码包及它们的依赖包
- go clean 命令会删除掉执行其他命令是产生的一些文件和目录
- go doc命令可以打印附于 Go 语言程序实体上的文档。我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的
- go test命令用于对 Go 语言编写的程序进行测试
- go list命令的作用是列出指定的代码包的信息
- go fix会把指定代码包的所有 Go 语言源码文件中的旧版本代码修正为新版本的代码
- go vet是一个用于检查 Go 语言源码中静态错误的简单工具
- go tool pprof 命令来交互式的访问概要文件的内容
六、golang 中关键字
- var 和 const:变量和常量的声明
- package and import:导入
- func:用于定义函数和方法
- return:用于从函数返回
- defer someCode:在函数退出之前执行
- go:用于并行
- select: 用于选择不同类型的通讯
- interface: 用于定义接口
- struct:用于定义抽象数据类型
- break、case、continue、for、fallthrough、else、if、switch、goto、default、流程控制
- chan:用于 channel 通讯
- type:用于声明自定义类型
- map:用于声明 map 类型数据
- range:用于读取 slice、map、channel数据