• go语言学习之路五:Go语言内存分配机制make&new


    Go有两种分配内存的机制,规则很简单,下面来简单介绍一下。
    1、new函数
    New()函数可以给一个值类型的数据分配内存(不知道什么是值类型请前往切片那一部分),调用成功后返回一个初始化的内存块指针,同时该类型被初始化为0值,原型定义:
    func new(Type) * Type
    new是一个分配内存的内置函数,但是不同于其他语言中new所做的工作,它只是将内存清零,而不是初始化内存。
    2、make函数
    Make()函数用于给引用类型分配内存空间,比如:slice,map,channal等,这里需要注意的一点是make()创建的是一个引用类型的对象,而不是一个内存空间的指针。Make()函数原型:
    func make(Type,size IntegerType)Type
    参数Type必须是一个引用类型(slice,map,channal);参数IntegerType指定要创建的该对象的个数。和new不同的是make调用成功是返回一个对象,而不是一个内存空间的指针。
    new 的作用是初始化一个指向类型的指针(*T),make 的作用是为 slice,map 或 chan 初始化并返回引用(T)
    package main

    import (
    "fmt"
    )

    func main() {
    p := new([]int)
    fmt.Println(p)     //输出&[],p本身是一个地址
    s := make([]int, 1)
    fmt.Println(s)     //输出[0],s本身是一个slice对象,其内容默认为0
    }
    通过这个例子可以看出,当对slice,map以及channel进行初始化时,使用make比new方式要好,而其他形式的则利用new进行初始化

  • 相关阅读:
    Hibernate入门
    oracle数据库应用(2)
    oracle数据库应用
    Oracle数据库基础
    InitBinder 在Controller方法执行之前进行捕获请求,进行类型的转换
    Spring面试题
    Object处理方法的返回值
    使用jQuery快速高效制作网页交互特效
    struts2
    表分区
  • 原文地址:https://www.cnblogs.com/chase-wind/p/5629002.html
Copyright © 2020-2023  润新知