go随记

go随记

  1. 使用make(切片类型,个数)对切片初始化

  2. var str string=strconv.Itoa(x)将x整形转变为string

  3. strconv.ParseInt 是将字符串转换为数字的函数

  4. 数组使用var方式创建会初始化

  5. copy复制的方式用于切片或者string

  6. go语言字符是byte,通过码值的形式,实现

  7. 使用%v打印各种类型

  8. go语言会自动地初始化

  9. 全局变量不支持使用自动推导的方式进行初始化

  10. 使用const模拟枚举

  11. 在包内的函数,如果是小写,那么只能在包内使用,大写才能在包外正常使用

  12. init(),用于包的初始化,优先调用

  13. 如果对一个包不适用的的话

    可以在前面加入_

    如果包名太长可以在前面加上自己的名字

    如果使用的.则不需要包名,就可使用白里面的函数,但是这样本包就不能写同名函数

  14. 使用打印函数可以直接打印切片,以及数组

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    func main() {
    //直接声明并且初始化
    ints := []int{1, 2, 3}
    for _, v := range ints {
    fmt.Println(v)
    }

    //先声明再创建空间
    var ints2 []int
    ints2 = make([]int, 2)
    for _, v := range ints2 {
    fmt.Println(v)
    }
    fmt.Println(ints)

    ints3 := [3]int{1, 2, 4}
    fmt.Println(ints3)

    }
  15. 如果切片的长度超了,我们使用append,容量会变成原来的两倍

  16. 切片的下标截取,相当于得到的是地址,所以当修改截取的数组的时候,原来的数组也会发生变化,如果是使用的是copy则只是一个拷贝

  17. 类的首字母大写,才能在其他包访问到类

  18. go语言的匿名函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    func() {
    defer fmt.Println("this is A.defer")
    i := 0
    for i < 10 {
    i++
    fmt.Println("this is goRoutine : ", i)
    time.Sleep(1 * time.Second)
    }
    fmt.Println("A")

    func() {
    defer fmt.Println("this is B.defer")
    fmt.Println("this is B")
    }()
    }() //加小括号是为了调用
  19. 使用runtime.Goexit()退出当前的goroutine

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    func() {
    defer fmt.Println("this is A.defer")
    i := 0
    for i < 10 {
    i++
    fmt.Println("this is goRoutine : ", i)
    time.Sleep(1 * time.Second)
    }
    fmt.Println("A")

    func() {
    defer fmt.Println("this is B.defer")
    fmt.Println("this is B")
    }()
    }() //加小括号是为了调用

go随记
https://tsy244.github.io/2023/05/08/go/go随记/
Author
August Rosenberg
Posted on
May 8, 2023
Licensed under