![](https://img-blog.csdnimg.cn/925461712dd24747bcae88662652c95f.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Go 值 指针 引用
文章平均质量分 80
gooooooo
富士康质检员张全蛋
人生实难,唯有自渡。只有接受了真实现的现状和真实的自己,调整好心态,才能脚踏实地的活着,然后去发现角落处的那些惊喜和美好,去相信一切苦难困境都会过去!“即使身处阴沟,也要记得仰望星空”。
展开
-
内存分配:new 还是 make?什么情况下该用谁?
该示例只是声明了一个变量 s,类型为 string,并没有对它进行初始化,所以它的值为 string 的零值,也就是 ""(空字符串)。这是因为指针类型的变量如果没有分配内存,就默认是零值 nil,它没有指向的内存,所以无法使用,强行使用就会得到以上 nil 指针错误。Go 语言中则是由该语言自己管理的,开发者不用做太多干涉,只需要声明变量,Go 语言就会根据变量的类型自动分配相应的内存。如果要对一个变量赋值,这个变量必须有对应的分配好的内存,这样才可以对这块内存操作,完成赋值的目的。原创 2023-03-08 10:20:22 · 427 阅读 · 0 评论 -
GO make和new的区别
当我们为slice分配内存的时候,应当尽量预估到slice可能的最大长度,通过给make传第三个参数的方式来给slice预留好内存空间,这样可以避免二次分配内存带来的开销,大大提高程序的性能。但是和 new 不同,它只用于 chan、map 以及 slice 的内存创建而且它返回的类型就是这三个类型本身,而不是他们的指针类型。我们在使用的时候不仅要声明它,还要为它分配内存空间,否则我们的值就没办法存储。new 和 make 是两个内置函数,主要用来创建并分配类型的内存。make 也是用于内存分配的,原创 2023-03-08 10:17:41 · 551 阅读 · 0 评论 -
Go 参数传递:值、引用及指针之间的区别?
修改参数假设你定义了一个函数,并在函数里对参数进行修改,想让调用者可以通过参数获取你最新修改的值。我仍然以前面课程用到的 person 结构体举例,如下所示:func main() { p:=person{name: "张三",age: 18} modifyPerson(p) fmt.Println("person name:",p.name,",age:",p.age)}func modifyPerson(p person) { p.name = "李四转载 2022-03-10 11:42:28 · 2927 阅读 · 2 评论 -
Go 数据类型 指针详解:在什么情况下应该使用指针?
什么是指针我们都知道程序运行时的数据是存放在内存中的,而内存会被抽象为一系列具有连续编号的存储空间,那么每一个存储在内存中的数据都会有一个编号,这个编号就是内存地址。有了这个内存地址就可以找到这个内存中存储的数据,而内存地址可以被赋值给一个指针。小提示:内存地址通常为 16 进制的数字表示,比如 0x45b876。可以总结为:在编程语言中,指针是一种数据类型,用来存储一个内存地址,该地址指向存储在该内存中的对象。这个对象可以是字符串、整数、函数或者你自定义的结构体。小技巧:你也可以..转载 2022-01-04 10:48:07 · 4662 阅读 · 1 评论