117.info
人生若只如初见

Golang中new和make有什么区别

在Golang中,newmake 是两个用于分配内存的内建函数。

  1. new 函数:

    • new 函数用于分配并初始化一个值的指针,返回指针。
    • new 函数的参数是一个类型,并返回该类型的指针。
    • 分配的内存被置零,也就是每个位都被设置为零值。
    • new 函数返回的是指向新分配的零值的指针。

    示例:

    var p *int
    p = new(int)
    *p = 42
    fmt.Println(*p) // 输出: 42
    
  2. make 函数:

    • make 函数用于创建内置引用类型(如 slicemapchannel)的对象。
    • make 函数的参数是一个类型和一个长度(可选,不适用于 channel)。
    • make 函数返回该类型的初始化的非零值。

    示例:

    var s []int
    s = make([]int, 5, 10)
    s[0] = 1
    fmt.Println(s) // 输出: [1 0 0 0 0]
    

综上所述,new 函数返回的是指向零值的指针,而 make 函数返回的是初始化的非零值。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fef4fAzsLAQBVDVI.html

推荐文章

  • golang全局变量怎么定义及赋值

    在Go语言中,可以使用var关键字来定义全局变量,并使用赋值操作符=进行赋值。全局变量可以在函数外部定义,在整个程序中都可以访问。
    以下是定义和赋值全局...

  • golang异步处理日志怎么实现

    在Go中,可以使用goroutine和channel来实现异步处理日志。下面是一个简单的示例:
    package main import ( "log" "os" "time"
    ) func main() { // 创建...

  • golang的copyCheck.check如何检测对象复制

    在Go语言中,要检测对象复制是否发生,可以使用reflect包中的DeepEqual函数来比较两个对象是否相同。以下是一个简单的示例代码:
    package main import ( "f...

  • golang守护进程实现的方法是什么

    在Golang中,可以使用以下方法实现守护进程: 使用os/exec包中的Start方法启动一个新进程,并在父进程中退出: package main import ( "log" "os" "os/exec" "sy...

  • sql查询结果怎么保存到文件

    在 SQL 查询中,可以使用以下方法将查询结果保存到文件: 使用 SQL 查询语句的结果导出功能。不同的数据库管理系统(DBMS)提供了不同的导出功能,例如在 MySQL ...

  • sql临时表的优缺点是什么

    SQL临时表的优点包括: 临时表可以提高查询性能:通过将查询结果存储在临时表中,可以减少查询的复杂性和计算量,从而提高查询性能。 临时表可以存储中间结果:在...

  • shell怎么获取文件内容给变量

    在shell中,可以使用以下方法将文件的内容赋值给变量: 使用命令替换: variable=$(cat filename) 或者使用反引号:
    variable=`cat filename` 这将使用cat命...

  • Python怎么实现聊天机器人

    Python可以通过使用自然语言处理(Natural Language Processing,NLP)库来实现聊天机器人。以下是一个基本的聊天机器人实现示例:
    import nltk
    from ...