// 5.Runtime.mp4
小对象结构体合并
bytes Buffer
sice、map预创建
长调用栈
避免频繁创建临时对象
字符串拼接 strings.Builder
不必要的memory copy
分析内存逃逸
// 这种声明方式 p 是一个 nil 值
var p *Point
// 改为
var p *Point = new(Point)
// 或者
var p *Point = &Point{}
为什么这么改就可以呢,我们看看定义,大致意思是,new函数会分配内存,返回的值是一个指向该类型零值的地址。
//第一种声明
var language map[string]string
language = make(map[string]string, 10) //在使用map前,需要先make,make的作用就是给map分配数据空间
language["1"] = "C#"
language["2"] = "go"
language["3"] = "python"
fmt.Println(language) //map[1:C# 2:go 3:python]
//第二种声明 相比上面的第一种,少了 var声明
language2 := make(map[string]string)
language2["1"] = "C#"
language2["2"] = "go"
language2["3"] = "python"
fmt.Println(language2) //map[1:C# 2:go 3:python]
//第三种声明 直接初始化
language3 := map[string]string{
"1": "C#",
"2": "go",
"3": "python",
}
fmt.Println(language3) //map[1:C# 2:go 3:python]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。