首页 > 其他分享 >go语言中的ew函数介绍

go语言中的ew函数介绍

时间:2025-01-22 23:42:40浏览次数:1  
标签:函数 指向 int 类型 go new ew 零值 指针

在 Go 语言中,new 是一个内建函数,用于分配内存并返回一个指向新分配的零值的指针。其主要作用是创建一个类型为 T 的新变量,并初始化为该类型的零值,返回指向这个变量的指针。它的语法和基本使用方法如下:

new 函数的基本语法

new(T)
  • T 是你想要创建的新变量的类型。
  • new(T) 返回的是一个类型为 *T 的指针,指向该类型的零值。

返回值

new 函数返回的是指向类型 T 零值的指针。注意,这个指针指向的内存已经被分配,并且其值被初始化为该类型的零值。

例如,new(int) 会返回一个指向零值 0*int 类型指针;new(string) 会返回一个指向零值空字符串 ""*string 类型指针。

示例

package main

import "fmt"

func main() {
	// 使用 new 创建一个 int 类型的指针,指向 0
	ptr := new(int)
	// 输出指针 ptr 所指向的值,应该是 0
	fmt.Println(*ptr) // 0
	
	// 修改 ptr 所指向的值
	*ptr = 42
	// 输出修改后的值
	fmt.Println(*ptr) // 42

	// 使用 new 创建一个 string 类型的指针,指向空字符串 ""
	strPtr := new(string)
	// 输出指针 strPtr 所指向的值,应该是 ""
	fmt.Println(*strPtr) // ""
}

newmake 的区别

在 Go 语言中,newmake 都用于分配内存,但它们有显著的区别:

  • new(T):返回一个类型为 *T 的指针,并将内存初始化为该类型的零值。
  • make(T, ...):用于创建切片(slice)、映射(map)和通道(channel)等引用类型,并初始化它们的内部结构。make 返回的是该引用类型本身,而不是指向它的指针。

示例:newmake 对比

package main

import "fmt"

func main() {
	// 使用 new 创建 int 类型指针,指向 0
	ptr := new(int)
	fmt.Println(*ptr) // 0

	// 使用 make 创建一个切片并初始化
	slice := make([]int, 5)
	fmt.Println(slice) // [0 0 0 0 0]
}

在这个例子中,new(int) 返回的是一个指向 int 类型零值的指针,而 make([]int, 5) 创建了一个包含 5 个元素的整数切片。

总结

  • new(T) 用于为类型 T 分配内存,并返回一个指向该内存区域的指针,指针指向该类型的零值。
  • new 是一个简便的内存分配工具,通常用于创建简单类型的指针。
  • newmake 都用于内存分配,但 make 主要用于初始化引用类型(如切片、映射和通道),并返回的是类型本身,而非指针。

通过 new,你可以轻松地为各种类型创建零值并获取它们的指针,这在一些场景中(如动态分配内存)非常有用。

标签:函数,指向,int,类型,go,new,ew,零值,指针
From: https://www.cnblogs.com/honghu0420/p/18686957

相关文章

  • 【JWT】jwt认证机制认识与理解,go案例实现
    JWT认证机制JWT(JSONWebToken)是一种轻量级的身份认证机制,广泛应用于现代Web开发中,尤其是在分布式系统和微服务中。它通过签名技术确保数据的真实性和完整性。1.JWT的基本结构JWT是一个由三部分组成的字符串(头部,负载,签名):Header.Payload.Signature1.1Header(头......
  • Go学习:多个变量或常量定义
    目录1.不同类型变量的声明(定义)2. 不同类型常量的声明(定义)1.不同类型变量的声明(定义)传统方法//不同类型变量的声明(定义)   varaint   varbfloat64    a,b=10,3.14packagemainimport"fmt"funcmain(){ //不同类型变量的声明(定义......
  • MySQL存储过程和函数
    存储过程和函数函数与存储过程最大的区别就是函数调用有返回值,调用存储过程用call语句,而调用函数就直接引用函数名+参数即可创建存储过程和函数详解1234567891011121314151617181920212223242526272829303132333435363738394041......
  • python中很常用的10个内置函数整理(初学必备)
    对于初学Python的小伙伴们来说,掌握内置常用函数是学好Python的重要一步。这些函数不仅能让你的代码更加简洁,还可以提高编程效率。本笔记将为大家整理62个Python中最常用的内置函数,并且给出了一些简单的示例,帮助大家更好地理解和运用这些函数。这些内置函数是Pyth......
  • 路径规划之启发式算法之二十七:果蝇优化算法(Fruit Fly Optimization Algorithm,FOA)
            果蝇优化算法(FruitFlyOptimizationAlgorithm,FOA)是一种基于果蝇觅食行为的仿生学原理而提出的新兴群体智能优化算法。是众多群体智能算法之一,可看我的文章:仿生的群体智能算法总结之二(十种)_群体仿生智能-CSDN博客仿生的群体智能算法总结之二(十种)_群体仿生智......
  • 【Golang/gRPC/Nacos】在golang中将gRPC和Nacos结合使用
    Nacos与gRPC前言关于这部分,前段时间我在看文档以及视频教程的时候,怎么都想不明白,到底为什么要用gRPC是什么,他在项目中应该充当什么样的角色?Nacos又是如何和他结合的?于是我就决定去看看一些小项目是如何实现的这个功能,现在将我最近学到的分享给大家。正文在正文开始之前......
  • 本地网站搭建之go语言环境安装
    时间:2025/1/22操作系统:win11开发工具选择:VSCcode1、下载go语言安装包,地址[https://golang.google.cn/dl/]2、配置环境变量路径为go安装路径配置完成后可以在命令行中验证,能够识别go命令即为配置成功3、换源这里推荐[https://www.goproxy.io/zh/]和https://goproxy.cn......
  • VSCode使用之go语言配置
    时间:2025/1/22扩展:go目的:支持go语言,方便安装其他必备插件安装该扩展包后可以执行该扩展包提供的命令Go:Install/UpdateTools来进一步扩展go工具执行命令的窗口可以通过Ctrol+Shift+P调出点击后会出现很多选项,可以根据自己需要勾选然后点击确定,等待下载安装,一般情况下......
  • .NET 9 new features-C#13新的锁类型和语义
    C#13中,引入了新的锁类型和语义,主要用于增强多线程编程中的同步机制。传统上,C#使用lock关键字与任意的object实例配合,实现线程间的互斥访问。然而,这种方式可能存在性能瓶颈和潜在的死锁风险。为此,C#13在.NET9中引入了新的锁类型System.Threading.Lock,提供更高效和安......
  • 第二篇 Django的模版各功能示例 以及 初学者常见问题
    目录1、Django模版环境配置2、本项目遇到的问题:UsingtheURLconfdefinedinHelloWorld.urls,DjangotriedtheseURLpatterns,inthisorder:3、Django模版常用语法规则变量1、Django模版环境配置我们接着上一篇文章项目将在HelloWorld目录底下创建templat......