美文网首页
引用类型介绍

引用类型介绍

作者: weifansym | 来源:发表于2019-02-21 00:37 被阅读32次

Golang的引用类型包括 slice、map 和 channel。它们有复杂的内部结构,除了申请内存外,还需要初始化相关属性。
内置函数 new 计算类型大小,为其分配零值内存,返回指针。而 make 会被编译器翻译 成具体的创建函数,由其分配内存和初始化成员结构,返回对象而非指针。

package main

func main() {
    a := []int{0, 0, 0} // 提供初始化表达式。
    a[1] = 10

    b := make([]int, 3) // make slice
    b[1] = 10

    c := new([]int)
    c[1] = 10 // ./main.go:11:3: invalid operation: c[1] (type *[]int does not support indexing)
}

引用类型:

变量存储的是一个地址,这个地址存储最终的值。内存通常在堆上分配。通过GC回收。
获取指针类型所指向的值,使用:" * " 取值符号 。比如:var *p int, 使用*p获取p指向的值
指针、slice、map、chan等都是引用类型。

new和make的区别

make 用来创建map、slice、channel
new 用来创建值类型

new 和 make 均是用于分配内存:
new 用于值类型和用户定义的类型,如自定义结构,make 用于内置引用类型(切片、map 和管道)。它们的用法就像是函数,但是将类型作为参数:new(type)、make(type)。new(T) 分配类型 T 的零值并返回其地址,也就是指向类型 T 的指针。它也可以被用于基本类型:v := new(int)。
make(T) 返回类型 T 的初始化之后的值,因此它比 new 进行更多的工作。new() 是一个函数,不要忘记它的括号。

相关文章

  • 引用类型介绍

    Golang的引用类型包括 slice、map 和 channel。它们有复杂的内部结构,除了申请内存外,还需要初...

  • 【Solidity智能合约系列】04--数据存储位置

    引用类型 之前已经介绍过一些值类型了,本文介绍一下引用类型。引用类型是一个复杂类型,占用的空间通常超过256位,所...

  • ABAP 引用类型介绍

    除了之前一篇文章什么是 ABAP Field Symbol[https://jerry.blog.csdn.net...

  • C++数据类型(三)引用和指针

    复合类型 C++复合类型有多种,这里只介绍其中的两种,引用和指针。 引用 引用:为对象起另外一个名字,引用类型引用...

  • 6-java基础语法

    内容介绍:自定义类ArrayList集合 1 引用数据类型(类) 1.1 引用数据类型分类 提到引用数据类型(类)...

  • Java-100天知识进阶-引用类型-知识铺(二)

    Java的两大数据类型: 一、内置数据类型前面一片已经介绍二、引用数据类型 引用数据类型 强引用file 软引用f...

  • 如何实现数组深拷贝和浅拷贝?

    如何实现数组深拷贝和浅拷贝? 1.背景介绍 javascript分原始类型与引用类型。Array是引用类型,直接用...

  • Swift学习

    ---值类型与引用类型 主要介绍什么: 1. 值类型指的是什么呢 什么情景下使用值类型 2引用类型是什么 什么情...

  • javascript基本包装类型介绍

    1.背景介绍 引用类型的值(对象)是一个引用类型的一个实例。在ECMAScript中,引用类型是一种数据结构,用于...

  • 2018-06-24指针和引用

    C++又很多复合类型,本文介绍两种指针和引用 引用 引用是一种复合类型,C++11新增加了一种引用“右值引用”,常...

网友评论

      本文标题:引用类型介绍

      本文链接:https://www.haomeiwen.com/subject/xcrlyqtx.html