❤️ 介绍
Go 是一种静态类型的语言,有与 C 类似的语法 :
- Go 具有内置的并发性
- 自动垃圾回收
- 函数多返回值
- 匿名函数和闭包
❤️ 标识符、关键字
- 下划线
_:表示空白标识符,在变量声明时,如果使用下划线作为标识符,表示忽略该变量,例如
go
// 这表示将 5 赋值给变量 a。而第二个值 10 被赋值给下划线,也就是被丢弃,不会保存在变量中供后续使用
a, _ = 5, 10- 导出标识符的条件 :导出的标识符名称的第一个字符应为 Unicode 大写字母(A - Z)
- 所有的关键字 :break、case、chan、const、continue、default、defer、else、fallthrough、for、func、go、goto、if、import、interface、map、package、range、return、select、struct、switch、type、var
❤️ 数据类型
基本类型 :数字、布尔值、字符串
- 【Numbers】
- 整数
- int:in 和 uint 都包含相同的大小,无论是 32 位还是 64 位
- int8 / byte:8 位有符号整数
- int16:16 位有符号整数
- int32 / rune:32 位有符号整数
- int64:64 位有符号整数
- uint:in 和 uint 都包含相同的大小,无论是 32 位还是 64 位
- uint8:8 位无符号整数
- uint16:16 位无符号整数
- uint32:32 位无符号整数
- uint64:64 位无符号整数
- uintptr:它是无符号整数类型。它的宽度未定义,但是可以容纳指针值的所有
- 浮点数
- float32 :32 位 IEEE 754 浮点数
- float64(默认):64 位 IEEE 754 浮点数
- 复数
- complex64 :包含 float32 作为实数和虚数分量的复数
- complex128 :包含 float64 作为实数和虚数分量的复数
- 整数
- 【Booleans】
- true
- false
- 【Strings】
go
// 整数
var X uint8 = 225
fmt.Println(X+1, X)
// 复数
var a complex128 = complex(6, 2)
var b complex64 = complex(9, 2)
fmt.Println(a)
fmt.Println(b)聚合类型 :数组、结构
引用类型 :指针、切片、map 集合、函数、Channel
接口类型 :
自定义类型 :
go
type myBool bool // 自定义类型 myBool,底层是 bool,但与 bool 不兼容💛 类型转换
go 不支持自动类型转换,对于类型转换,必须执行显式转换
go
var nhooo1 int = 845
// 显式类型转换
var nhooo2 float64 = float64(nhooo1)
var nhooo3 int64 = int64(nhooo1)
var nhooo4 uint = uint(nhooo1)❤️ 运算符
- 算术运算符
go
result1 := p + q // 加法
result2 := p - q // 减法
result3 := p * q // 乘法
result4 := p / q // 除法
result5 := p % q // 求模- 关系运算符
go
result1 := p == q // 相等
result2 := p != q // 不等
result3 := p < q // 小于
result4 := p > q // 大于
result5 := p >= q // 大于等于
result6 := p <= q // 小于等于- 逻辑运算符
go
&& // 与
|| // 或
! // 非- 按位运算符
go
result1 := p & q // AND
result2 := p | q // OR
result3 := p ^ q // XOR
result4 := p << 1 // 左移
result5 := p >> 1 // 右移
result6 := p &^ q // AND NOT- 赋值运算符
go
p = q // 赋值
p += q // 加赋值
p -= q // 减赋值
p *= q // 乘赋值
p /= q // 除赋值
p %= q // 求模赋值- 杂项运算符
go
& // 获取变量地址
* // 指针解引用
<- // 从通道接收值❤️ 变量、常量
💛 创建
创建变量 :
- 使用 var 声明变量
go
var variable_name int = 20 // 完整写法,显式类型和初始化
var myvariable1 = 20 // 类型由编译器自动推断
var myvariable1 int // 不初始化,默认为零值(数字为0,布尔为false,字符串为"")
var myvariable1, myvariable2, myvariable3 int = 2, 454, 67
var myvariable1, myvariable2, myvariable3 = 2, "GFG", 67.56- 使用
:=(短变量声明)- 不能不初始化
- 不能用于声明全局变量
go
myvariable1 := 39
myvariable1, myvariable2, myvariable3 := 800, 34.7, 56.9创建常量 :常量一旦定义就不能更改,使用 const 声明,不能使用 :=
go
const GFG = "nhooo"💛 作用域
- 变量可以直接定义在 package 下
go
package main
var GlobalVar = 100 // 全局变量,大写,其他包可以访问
func main() {
var local = 10 // 局部变量
}- 变量首字母大写=导出,小写=包内可见
go
var GlobalVar = 100 // 大写,其他包可以访问- 变量可以在内层重新定义
go
x := 1
{
x := 2 // 新的 x,遮蔽外层
fmt.Println(x) // 输出 2
}
fmt.Println(x) // 输出 1❤️ 注意事项
- Go 文件的命名采用下划线方式
- Go 不允许在同一个包内,有两个相同名字的导出函数