《Go语言实战》笔记

第一章 关于Go语言的介绍

1.1 用 Go 解决现代编程难题

1.1.2 并发

需要注意的是,如果在通道中传递的是指向数据的指针,而且读和写是在不同的goroutine完成的,则会出现问题,需要加锁进行控制

在Golang中对于并发问题的控制,优先要用通道的解决办法,这是语言设计的思想,在用通道实现比较麻烦的情况下可以用锁来实现

比如:

package main

import (
    "fmt"
    "sync"
)

func main() {
    // 利用通道
    done := make(chan int, 1)

    go func() {
        fmt.Println("你好, 世界")
        done <- 1
    }()

    <-done

    // 利用锁
    var lock sync.Mutex

    lock.Lock()
    go func() {
        fmt.Println("hello")
        lock.Unlock()
    }()

    lock.Lock()
}
1.1.3 Go 语言的类型系统

Go语言也同样支持面向对象开发,但是采用的思路是组合而不是继承

image-20201104154409620

第3章 打3包和工具链

3.1 包

3.1.1 包名惯例

包名一般和目录同名,小写

3.1.2 main 包

go语言程序中必须有一个main的包,go语言编译的时候会把这个包编译为可执行的二进制文件

3.5 进一步介绍 Go 开发工具

3.5.1 go vet

vet 命令会检测代码的常见错误

3.5.2 Go 代码格式化

要多使用 go fmt

3.6 与其他Go开发者合作

  1. 包应该在代码库的根目录中。golang的包最好不要嵌套文件目录,都全部放在项目根目录下,因为导入一个包是需要导入全路径的,如果嵌套的多,那么导入的路径就会很长。

   转载规则


《《Go语言实战》笔记》 KaKa 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录