golang 值类型和引用类型

golang 值类型和引用类型的区别

值类型和引用类型两者之间的主要区别:拷贝操作和函数传参。
值类型在使用= 赋值的时候,是拷贝复制;
值类型在函数传参的时候,也是拷贝复制
引用类型在= 和函数传参的时候,是传递的指向值的指针或者叫引用,指针和引用有细微差别。
Java 值类型可以直接赋值,引用类型需要通过copy函数去拷贝,否则只能用赋值

值类型和引用类型

  • 基本数据类型 int 、float、bool、string、array、结构体 struct,都是值类型;
  • 引用类型,interface、slice、map、chan一共四种类型都是引用类型,make 的作用是初始化内置的数据结构,也就是我们在前面提到的切片、哈希表和 Channel;new 的作用是根据传入的类型分配一片内存空间并返回指向这片内存空间的指针。
  • 在内存里分成两大块,栈和堆,值类型的变量通常存储在栈区,引用类型通常存储在堆区,在golang中,但有可能值类型也存储在堆区,反过来也有可能引用类型存储在栈区。

逃逸分析

  • 一种典型的对象逃逸就是:对象被复制给成员变量或者静态变量,可能被外部使用,此时变量就发生了逃逸。
  • 另一种典型的场景就是:对象通过return语句返回。如果对象通过return语句返回了,此时的程序并不能确定这个对象后续会不会被使用,外部的线程可以访问到这个变量,此时对象也发生了逃逸。

不同语言的语言类型和语法

  • 语言类型
  • 语法
  • 语言生态
    这前二者几乎大多数语言都是类似的,生态在web方面也是大同小异,相互“抄作业”
    区别还是在于语言的细节上,有编译器 ,也就是编译原理实现,语言的设计与实现

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值