全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何在Golang中使用指针初始化变量_new和make创建指针示例

new用于分配零值内存并返回指向它的指针,仅支持基本类型、结构体等,不支持slice/map/channel;make仅用于slice/map/channel的初始化,返回值本身而非指针。

在 Go 中,newmake 都用于内存分配,但它们用途不同,且都不能直接“创建指针”——new 返回指针,make 返回值本身(仅用于 slice、map、channel),需额外取地址才能获得指针。

new:分配零值内存并返回指向它的指针

new(T) 为类型 T 分配零值内存,返回 *T。它不调用构造函数(Go 没有构造函数),也不支持 slice/map/channel。

  • ptr := new(int) → 分配一个 int(值为 0),返回 *int
  • ptr := new(string) → 分配一个空字符串 "",返回 *string
  • ptr := new([3]int) → 分配长度为 3 的数组(全 0),返回

make:仅用于引用类型,返回值而非指针

make 只适用于 slicemapchannel,返回的是该类型的值(不是指针),但这些类型底层本身就是引用类型(包含指针字段)。

  • s := make([]int, 5) → 返回 []int(底层数组已分配,长度 5)
  • m := make(map[string]int) → 返回 map[string]int(已初始化,可直接使用)
  • c := make(chan int, 2) → 返回 chan int(带缓冲)

若真需要指向 slice/map/channel 的指针(极少用),需显式取地址:ptr := &s,但这通常没必要,因为它们本身已可共享修改。

如何正确获得指针:结合字面量或 new

更常见、更清晰的方式是用取地址操作符 &

  • i := 42; ptr := &i → 明确、高效
  • s := []int{1,2,3}; ptr := &s → 得到 *[]int(不常用)
  • m := make(map[string]bool); ptr := &m → 得到 *map[string]bool(一般不需要)

注意:make 不能和 & 混写成 &make(...) —— 会编译错误,因为 make 返回的是不可寻址的临时值。

对比总结:什么时候用哪个

  • 要一个指向零值的指针?→ 用 new(T)(如 new(bytes.Buffer)
  • 要初始化 slice/map/channel?→ 必须用 makenew 对它们无效)
  • 已有变量想取指针?→ 用 &v,最直观安全
  • 自定义结构体?→ 推荐字面量 + &u := &User{Name: "Alice"},比 new(User) 更灵活


# go  # golang  # String  # 构造函数  # 字符串  # 结构体  # int  # 指针  # map  # channel  # 的是  # 返回值  # 而非  # 也不  # 不需要  # 什么时候  # 已有  # 适用于  # 自定义  # 但这 


相关文章: c++ stringstream用法详解_c++字符串与数字转换利器  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  建站之星CMS建站配置指南:模板选择与SEO优化技巧  如何快速搭建安全的FTP站点?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  山东云建站价格为何差异显著?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  如何通过远程VPS快速搭建个人网站?  如何在万网开始建站?分步指南解析  制作国外网站的软件,国外有哪些比较优质的网站推荐?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  如何在IIS中配置站点IP、端口及主机头?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  利用JavaScript实现拖拽改变元素大小  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何在云虚拟主机上快速搭建个人网站?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  如何快速搭建二级域名独立网站?  实例解析Array和String方法  如何在新浪SAE免费搭建个人博客?  如何在景安服务器上快速搭建个人网站?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  如何在VPS电脑上快速搭建网站?  建站之星后台密码如何安全设置与找回?  如何通过虚拟主机快速完成网站搭建?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  香港服务器WordPress建站指南:SEO优化与高效部署策略  如何使用Golang安装API文档生成工具_快速生成接口文档  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  如何在建站之星网店版论坛获取技术支持?  装修招标网站设计制作流程,装修招标流程?  如何用虚拟主机快速搭建网站?详细步骤解析  nginx修改上传文件大小限制的方法  太原网站制作公司有哪些,网约车营运证查询官网?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  建站之星在线版空间:自助建站+智能模板一键生成方案  建站主机无法访问?如何排查域名与服务器问题  北京网站制作的公司有哪些,北京白云观官方网站?  定制建站流程步骤详解:一站式方案设计与开发指南  如何在Ubuntu系统下快速搭建WordPress个人网站?  如何用AWS免费套餐快速搭建高效网站?  定制建站流程解析:需求评估与SEO优化功能开发指南  建站之星微信建站一键生成小程序+多端营销系统 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。

  • 返回顶部
  • 400-708-3566
  • QQ在线
  • 微信二维码