个人博客 个人博客
首页
  • 前端
  • 后端
  • Git
  • Docker
  • 网络
  • 操作系统
工具
阅读
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

董先亮

前端react开发
首页
  • 前端
  • 后端
  • Git
  • Docker
  • 网络
  • 操作系统
工具
阅读
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 基础

    • var、new、make
      • 前言
        • 指针
      • var
      • new
      • make
    • 接口
  • 常见问题

  • Go
  • 基础
NeverStop1024
2022-06-12
目录

var、new、make

# 前言

# 指针

var n *int          // 声明一个指向整数的指针变量n
num := 42           // 声明一个整数变量num,并将其初始化为42
n = &num            // 将整数变量num的地址分配给指针变量n
fmt.Println(*n)     // 输出指针变量n所指向的整数值,即42
1
2
3
4

指针变量用 *类型进行定义,指针变量只能存地址,想取到指针变量的地址用 &,想取到指针变量对应的值,用 *变量名

# var

  • 用var定义值类型,会分配内存空间,并赋该类型的零值
  • 用var定义引用类型:不会分配内存,默认就是nil
//值类型
var i int
fmt.Println(i) //i=0
 
//引用类型
var j *int  
fmt.Println(j)  
*j = 10  //invalid memory address or nil pointer dereference
//也就是说,空指针还没有内存分配,是不能使用的。
1
2
3
4
5
6
7
8
9

# new

// 函数签名
func new(Type) *Type // 返回指针类型
1
2

可以用来定义值类型和引用类型:分配内存空间,并赋该类型的零值,返回一个指向该类型内存地址的指针
日常工作中,通常是直接声明指针使用,不需要new操作。

var j *int  
j = new(int)  // 让j里面的内容指向一块分配好的内存地址,地址里面设置int的零值:0
fmt.Println(j)   // 0xc000b4008
fmt.Println(*j)  // 0
*j = 10  
fmt.Println(*j) // 10
1
2
3
4
5
6

# make

// 函数签名
func make(t Type, size ...IntegerType) Type
1
2

make用于map, slice,chan 的内存创建,因为他们三个是引用类型,直接返回这三个类型本身(引用类型),不赋零值

编辑 (opens new window)
上次更新: 2023/04/23
接口

接口→

最近更新
01
mock使用
07-12
02
websocket即时通讯
07-12
03
前端面试题
07-09
更多文章>
Theme by Vdoing | Copyright © 2022-2023 NeverStop1024 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式