GO基础 | 青训营笔记

110 阅读3分钟

简介

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…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。