最近由于项目需求,阅读一些Go语言编写的项目的源代码,在某一个函数中发现了一个奇怪的现象:一个函数的返回值类型声明的是一个接口的类型,但是实际在函数体内返回的却是一个结构体类型的对象。
这个现象对于新手的我来说很是费解。在经过一些资料的查阅
1 bytes.Buffer定义
bytes.Buffer提供可扩容的字节缓冲区,实质是对切片的封装;结构中包含一个64字节的小切片,避免小内存分配:// A Buffer is a variable-sized buffer of byt
在看本篇文章前我们需要了解阻塞的概念
在执行过程中暂停,以等待某个条件的触发 ,我们就称之为阻塞
在Go中我们make一个channel有两种方式,分别是有缓冲的和没缓冲的
缓冲channel 即 buffer channel 创建方式为
很多时候我们需要让main函数不退出,让它在后台一直执行,例如:func main() {for i := 0; i < 20; i++ { //启动20个协程处理消息队列中的消息c := consumer.New()go c.Start(
go,在删除切片中的元素时,可以使用append(),方式将其中的元素删除。slice :=make([]int , 0)
slice = append(slice[:k],slice[k+1:])
//此方法就是删除切片中位于k中的元素由
Go 获取随机数是开发中经常会用到的功能, 不过这个里面还是有一些坑存在的, 本文将完全剖析 Go math/rand, 让你轻松使用 Go Rand.
开篇一问: 你觉得 rand 会 panic 吗 源码剖析
math/rand 源码其
for range的val不能直接修改
因为地址不同package main
import