这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
一、基础组成
包声明
引入包
函数
变量
语句&表达式
注释
二、一个例子
package main
import "fmt"
func main()
{
fmt.Println("hello world!")
}
三、基础语法
1. go的关键字
break default func interface select case defer
go map struct chan else goto package switch
const fallthrough if range type continue for
import return var
2. 变量声明
1. 普通变量
第一种方法 var 变量名 类型 = 表达式
var a int = 123
如果没有声明变量名的话 会自动识别
如果没有声明表达式 会赋予零值
第二种方法: 变量名 := 表达式
x := 1
x, y := int8(1), int64(2)
变量还能通过 变量块和变量列表声明
package main
import "fmt"
func main() {
var c int
var a, b int = 100, 200
x, y, z := 1, 2, 3//这是变量列表
var (
h, i, j = "a", "b", "c"
)//这是变量块
fmt.Println(a, b, c)
fmt.Println(x, y, z)
fmt.Println(h, i, j)
}
//错误多余的println写法:fmt.Println(a, b, c,'\n'),这个函数会自动换行滴
2. Go语言匿名变量(没有名字的变量)
匿名变量的特点是一个下画线_,_本身就是一个特殊的标识符,被称为空白标识符。它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算。使用匿名变量时,只需要在变量声明的地方使用下画线替换即可。
func GetData() (int, int) {
return 100, 200
}
func main(){
a, _ := GetData()
_, b := GetData()
fmt.Println(a, b)
}
3. Go语言变量的作用域
- 函数内定义的变量称为局部变量
- 函数外定义的变量称为全局变量
- 函数定义中的变量称为形式参数
局部变量
package main
import (
"fmt"
)
func main() {
//声明局部变量 a 和 b 并赋值
var a int = 3
var b int = 4
//声明局部变量 c 并计算 a 和 b 的和
c := a + b
fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
}
全局变量
在函数体外声明的变量称之为全局变量,全局变量只需要在一个源文件中定义,就可以在所有源文件中使用,当然,不包含这个全局变量的源文件需要使用“import”关键字引入全局变量所在的源文件之后才能使用这个全局变量。
全局变量声明必须以 var 关键字开头,如果想要在外部包中使用全局变量的首字母必须大写。
package main
import "fmt"
//声明全局变量
var c int
func main() {
//声明局部变量
var a, b int
//初始化参数
a = 3
b = 4
c = a + b
fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
}
3. 字符和字符串
字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的,也就是说对于传统的字符串是由字符组成的,而Go的字符串不同,它是由字节组成的。
字符使用单引号定义字符,字符定义后无法修改
var word byte = 'a'
双引号会解析特殊字符,如\n或\r等,反引号直接原样处理
var word string = "hello \n world"
var word2 string = `hello \n world`
基本数据类型相互转换
var num int = 42
// 转浮点型
var float float64 = float64(num)
// 转 整形无符号八位
var ui uint8 = uint8(float)
fmt.Println(num, float, ui)