简介
go语言是一门强类型语言
特点
- 高性能、高并发
- 语法简单、学习曲线平缓
- 有丰富的标准库
- 完善的工具链
- 可以快速编译
- 跨平台
基础语法
变量
语法: var 变量名 [标量类型] = 变量 : =
注意:字符串可以用'+'进行拼接也可以通过'=='进行两个字符串的判断
常量
语法: const 变量名 [标量类型] =
数组
语法: var 数组名 长度 类型 例如: var a [2]int
数组名 := 长度 类型{} 例如:b := [2]int{1, 2, 3, 4, 5}
切片
切片可以任意更改长度
语法: 切片名 :=make([]类型,长度) 例如:s := make([]string, 3) 数组名 := []类型{} 例如:b := []int{1, 2, 3, 4, 5}
range: range遍历的时候,对于数组会返回两个值,第一个是索引,第二个是对应位置的值,可以通过range来进行快速遍历。如果不需要索引,可以用下划线忽略
map
语法: map名 := make(map[键类型]值类型) 例如:m := make(map[string]int) m["one"] = 1
map名 :=map[键类型]值类型{键:值...}例如m2 := map[string]int{"one": 1, "two": 2}
注意: go中的map是完全无序的,遍历的时候既不会按照字母顺序也不会按照插入顺序输出,而是随机顺序
选择语句
if else
dart
复制代码
if 7%2 == 0 {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd")
}
if 8%4 == 0 {
fmt.Println("8 is divisible by 4")
}
if num := 9; num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has 1 digit")
} else {
fmt.Println(num, "has multiple digits")
}
注意: if后面必须接大括号
switch
css
复制代码
a := 1
switch a {
case 1:
fmt.Println("one")
default:
fmt.Println("other")
}
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("It's before noon")
default:
fmt.Println("It's after noon")
}
注意: 在go语言中使用switch语句不需要添加break,在执行完需要执行的语句后自动退出
循环语句
css
复制代码
i := 1
for {
fmt.Println("loop")
break
}
for j := 7; j < 9; j++ {
fmt.Println(j)
}
for i <= 3 {
fmt.Println(i)
i = i + 1
}
go语言中只有for循环一种
函数
语法: func 函数名(参数列表) 返回值
go
复制代码
func add(a int, b int) int {
return a + b
}
注意: 函数原生支持多个返回值,在实际的业务逻辑代码里几乎所有的函数都返回两个值,一个是真正的返回结果,一个是错误信息
指针
go中指针的主要用途是对传入参数进行修改
语法: 变量名*类型 例如:n*int
注意: 如果不使用指针对参数进行修改是无效的,但使用指针后,为了类型匹配,调用的时候会加一个&
go
复制代码
func add2ptr(n *int) {
*n += 2
}
func main() {
n := 5
add2ptr(&n)
}
结构体
带类型的字段的集合
语法: type 结构体名 struct{}例如:type user struct{name string password string}
可以用结构体的名称去初始化一个结构体变量,构造的时候需要传入每个字段的初始值,也可以使用键值对的方式去指定初始值
go
复制代码
a := user{name: "wang", password: "1024"}
b := user{"wang", "1024"}
c := user{name: "wang"}
c.password = "1024"
var d user
d.name = "wang"
d.password = "1024"
结构体方法
语法: func (参数列表) 方法名(参数列表) 返回值 例如:func (u user) checkPassword(password string) bool
作者:梦晓Devil
链接:juejin.cn/post/719000…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。