介绍
接触golang也有一年多了,写博客主要是记录一下日常所学和遇到的坑。
1.go特色
1.开放源代码,go本是就是用go语言编写的。
2.静态类型和编译型。
3.跨平台。
4.自动垃圾回收。
5.原生并发编程。
6.完善的构建工具。
7.多编程范式。
8.代码风格强制统一。
2.go中的引用传递和值传递
Golang 中函数之间传递变量时总是以值的方式传递的,无论是 int,string,bool,array 这样的内置类型(或者说原始的类型),还是 slice,channel,map 这样的引用类型,在函数间传递变量时,都是以值的方式传递,也就是说传递的都是值的副本。
Go 语言里的引用类型有如下几个:切片、映射、通道、接口和函数类型。当声明上述类型的变量时,创建的变量被称作标头(header)值。从技术细节上说,字符串也是一种引用类型。每个引用类型创建的标头值是包含一个指向底层数据结构的指针。因为标头值是为复制而设计的,所以永远不需要共享一个引用类型的值。标头值里包含一个指针,因此通过复制来传递一个引用类型的值的副本,本质上就是在共享底层数据结构。
所以,引用类型在函数传递的时候,是值传递,只不过这里的“值”指的是标头值。
3.new和make,二者有明显区别
适用范围:make 只能创建内建类型(slice map channel), new 则是可以对所有类型进行内存分配
返回值: new 返回指针, make 返回引用
填充值: new 填充零值, make 填充非零值
4.golang中的map
1.打印是随机的
2.不是线程安全的
5.对象池
在高并发或者大量的数据请求的场景中,我们会遇到很多问题,垃