Go 语言中的坑

Go 的优点

Go like C++

  • 内存消耗少
  • 执行速度快
  • 启动快
    Go not like C++
  • 程序编译时间短
  • 像动态语言一样灵活(runtime, interface, 闭包,反射)
  • 内存并发正常

defer

defer 执行顺序是先进后出,栈的方式 FIFO ,参数的值在 defer 语句执行就已经确定了

for i := 0; i < 5; i++ {
    defer fmt.Printf("%d ", i)
}

执行结果:

4 3 2 1 0 

append 不是线程安全的

slice 中,如果 a[x] 和 b[y] 指向同一个内存区域,那么存在竞态关系

package main

import (
	"fmt"
)

func main() {
	a := []int{1, 2}
	b := a[1:]
	go func() {
		a[1] = 0
	}()

	fmt.Println(b[0])

}

slice.go

package main

import (
	"fmt"
)

func main() {
	a := []int{1, 2}
	b := a[1:]
	go func() {
		a[1] = 0
	}()
	fmt.Println(b[0])
  • 0
    点赞
  • 4
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值