w

wnwk

V1

2022/12/16阅读:28主题:默认主题

go 备忘录

#安装 godoc 命令 go install golang.org/x/tools/cmd/godoc@latest。godoc -http :8000. If you go to localhost:8000/pkg you will see all the packages installed on your system.

指针

  • &是取地址
  • 取地址指向的数据,如果 后是数据类型,比如 string,表示指向 sring 类型的指针。如果后市变量,表示取这个变量的内容

if r, e := f1(i); e != nil r,e :=f1(i) 这是赋值语句。 e!=nil 才是判断语句

类型 chan<- int 表示一个只发送int的channel,只能发送不能接收。相反,类型<-chan int 表示一个只接收int的channel,只能接收不能发送。(箭头<-和关键字chan的相对位置表明了channel的方向 。)这种限制将在编译期检测。

有问题的程序

在for 循环中,循环可能已经执行完成了,但是线程才刚刚启动,v 的作用域是在for 循环内,v对于所有的线程都是共享的,所以每个线程拿到的值可能都是 v 的最后一个值。 可以在 在每次for 结束后 main线程睡一段时间,结果可能就正确了。正确的做法是把v 值传入到 线程内

package main

import "fmt"

func main() {
 a := []int{2, 4, 6, 8, 10}
 ch := make(chan int, len(a))
 for _, v := range a {
  go func() {
   ch <- v * 2
  }()
 }
 for i := 0; i < len(a); i++ {
  fmt.Println(<-ch)
 }
}

ticket 是隔几秒发一次

分类:

后端

标签:

后端

作者介绍

w
wnwk
V1