go语言 中 new能初始化哪些类型?

在 Go 语言中,new 函数用于分配指定类型的零值,并返回指向该值的指针。当你想创建一个结构体、数组或其他值类型的指针时,new 是非常有用的。下面是如何使用 new 函数初始化一个结构体的示例:

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func main() {
    // 使用 new 分配一个 Person 结构体的零值,并返回指向它的指针
    p := new(Person)
    
    // 因为 p 是一个指针,所以我们需要使用指针解引用来设置值
    p.Name = "Alice"
    p.Age = 30
    
    // 打印结构体的内容
    fmt.Println(*p) // 输出: {Alice 30}
}


同样地,你也可以使用 new 来初始化数组的指针:

package main

import "fmt"

func main() {
    // 使用 new 分配一个 int 数组的零值,并返回指向它的指针
    a := new([5]int)
    
    // 解引用指针并设置数组的值
    (*a)[0] = 1
    (*a)[1] = 2
    (*a)[2] = 3
    (*a)[3] = 4
    (*a)[4] = 5
    
    // 打印数组的内容
    fmt.Println(*a) // 输出: [1 2 3 4 5]
}

需要注意的是,new 返回的是指向零值的指针。对于基本数据类型,零值通常是 0 或 “” 等。对于复合类型如结构体或数组,零值是指向每个字段或元素的零值。
对于切片、映射(maps)和通道(channels),你应该使用 make 函数来初始化,因为 new 只会返回指向 nil 切片、映射或通道的指针。make 函数不仅分配内存,还初始化这些类型,使其可以立即使用。

相关推荐

  1. go语言 new初始化哪些类型

    2024-07-14 17:20:03       19 阅读
  2. Go语言Go语言的接口类型

    2024-07-14 17:20:03       33 阅读
  3. go 语言的别名类型

    2024-07-14 17:20:03       52 阅读
  4. go 语言类型判断

    2024-07-14 17:20:03       59 阅读
  5. go语言基本类型

    2024-07-14 17:20:03       48 阅读
  6. 深入探讨 Go 语言的 Map 类型

    2024-07-14 17:20:03       47 阅读
  7. 深入探讨 Go 语言的 Map 类型(续)

    2024-07-14 17:20:03       54 阅读
  8. Go 语言的接口类型转换详解

    2024-07-14 17:20:03       49 阅读
  9. Go语言工作负载类型对并发的影响

    2024-07-14 17:20:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 17:20:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 17:20:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 17:20:03       58 阅读
  4. Python语言-面向对象

    2024-07-14 17:20:03       69 阅读

热门阅读

  1. 深度学习早停(early stop)训练策略

    2024-07-14 17:20:03       20 阅读
  2. 昇思训练营打卡第二十五天(RNN实现情感分类)

    2024-07-14 17:20:03       17 阅读
  3. 使用Scikit-Learn决策树:分类问题解决方案指南

    2024-07-14 17:20:03       13 阅读
  4. return promise 为undefined原因

    2024-07-14 17:20:03       18 阅读
  5. UNION 和 UNION ALL

    2024-07-14 17:20:03       21 阅读
  6. vue2一个计时器的功能

    2024-07-14 17:20:03       24 阅读
  7. Python bisect的使用

    2024-07-14 17:20:03       25 阅读
  8. `nmap`模块是一个用于与Nmap安全扫描器交互的库

    2024-07-14 17:20:03       18 阅读
  9. 【EasyExcel】根据单元格内容自动调整列宽

    2024-07-14 17:20:03       19 阅读