iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >GO如何初始化数据结构
  • 387
分享到

GO如何初始化数据结构

2023-07-04 22:07:52 387人浏览 薄情痞子
摘要

本篇内容主要讲解“Go如何初始化数据结构”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“GO如何初始化数据结构”吧!使用 golang 进行编码过程中,你们都是如何初始化数据结构的呢?GO 里面提

本篇内容主要讲解“Go如何初始化数据结构”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“GO如何初始化数据结构”吧!

使用 golang 进行编码过程中,你们都是如何初始化数据结构的呢?

GO 里面提供了 2 个关键字来进行初始化数据结构

  • new

  • make

不过有时候我也会直接使用花括号的方式直接就初始化,例如这样:

name := []string{"xiaomotong","bob","marry"}

上面这种情况,是初始化的时候已经明确好了需要填的值,可以使用上面这种做法,不过工作中大多数情况初始化的时候,数据还是未知的,大部分时间还是会使用上述两种方式

make

make 是 golang 提供的关键字,主要是用于初始化内置的数据结构,不能初始化自定义的数据结构 , make 可以初始化的数据类型有:

  • slice 切片

  • map hash表

  • channel 通道

例如我们初始化的时候就可以这样写

  • 初始化一个切片,填入 len 值, cap 值,切片底层的数据结构除了这俩值以外,还有一个指针,指向的是一个底层数组

  • 初始化一个 map,map 的底层是指向一个 hmap 的结构体指针,结构体里面的具体成员感兴趣的 xdm 可以翻看我的历史文章

  • 初始化一个通道 ch,这个 ch 是指向一个 hchan 的结构体指针,同样也可翻看我的历史文章看细节

strs := make([]string, 0, 10)myMap := make(map[string]string, 10)ch := make(chan struct{}, 10)

我们查看 make源码解释可以看到,make 确实支持创建和初始上述 3 种类型

GO如何初始化数据结构

根据解释,我们知道,make 的返回值的类型与填入参数的类型保持一致,咱们填入的是切片类型,那么返回值就是切片类型,填入其他类型对应返回值也是我们期望的类型,没毛病

new

那么为什么有了 make 做数据结构的初始化,还需要 new 干啥?

细心的 胖鱼 可以看出来,前面说到了  make 只适用于初始化 golang 提供的内置数据结构,对于自定义的数据结构,就捉襟见肘了 , 这个时候还是需要 new  出马摆平了

用 new 初始化数据结构可以这样写:

  • 自定义一个结构体,里面 2 个成员, age 和 name

  • 使用 new 对 T 最初始化,返回一个结构体的指针

type T struct{    age int    name string}func main(){    t := new(T)    fmt.Println("t.name == ",t.name)    fmt.Println("t.age == ",t.age)}

程序执行效果如下:

# go run main.got.name ==t.age ==  0

果然是给我初始化了数据结构,只不过数据都是 零值

当然我们也可以这样写:

func main(){    a := new(int)    fmt.Println("a == ",a)    fmt.Println("*a == ",*a)}

程序执行效果如下:

# go run main.goa ==  0xc420018078*a ==  0

根据程序运行结果,我们知道 new 返回的是一个指针,且这个指针指向的内存地址上对应的值是一个该类型的 零值

瞅一眼 new 源码说明

GO如何初始化数据结构

golang 源码中说到, new 的第一个参数是 数据类型,不是一个值,并且 new 的返回值是一个根据参数类型分配零值内存的指针

因此,我们上面看到的 new 出来的数据结构,打印出来的数据都是对应类型的零值

make 和 new 的区别

最后再来梳理一下 make 和 new 的区别,加深印象

  • make 只能用来初始化内置数据类型

    • slice

    • map

    • chan

      而 new 可以分配任意类型的数据(包括自定义数据类型)

  • make 返回的是引用,是 Type 类型,new 返回的是指针,是 *Type 类型的

到此,相信大家对“GO如何初始化数据结构”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: GO如何初始化数据结构

本文链接: https://www.lsjlt.com/news/347841.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • GO如何初始化数据结构
    本篇内容主要讲解“GO如何初始化数据结构”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“GO如何初始化数据结构”吧!使用 golang 进行编码过程中,你们都是如何初始化数据结构的呢?GO 里面提...
    99+
    2023-07-04
  • 聊聊GO初始化数据结构的方法(附代码示例)
    本篇文章给大家介绍有关GO语言初始化数据结构的方法,GO里面提供了2个关键字来进行初始化数据结构,下面一起看看怎么使用吧~希望对大家有所帮助。使用 golang 进行编码过程中,你们都是如何初始化数据结构的呢?GO 里面提供了 2 个关键字...
    99+
    2023-05-14
    初始化 Go go语言
  • go中的var可以初始化结构体吗
    本篇内容主要讲解“go中的var可以初始化结构体吗”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“go中的var可以初始化结构体吗”吧!语法提前了解string转成int 在golang中使用st...
    99+
    2023-06-21
  • golang全局结构体初始化
    php小编草莓今天为大家介绍Golang中的全局结构体初始化。在Golang中,可以使用结构体来组织和管理数据,而全局结构体初始化是一种方便且常用的方式。通过全局结构体初始化,我们可以...
    99+
    2024-02-12
  • 如何理解C++ 结构体初始化与赋值
    本篇文章给大家分享的是有关如何理解C++ 结构体初始化与赋值,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.结构体初始化结构体是常用的自定义构造类型,是一种很常见的数据打包方...
    99+
    2023-06-25
  • vue中如何初始化data数据
    目录如何初始化data数据vue程序初始化流程初始化改写的原因流程实现源码流程初始化流程如何初始化data数据 后台管理系统中,新建和编辑使用同一个页面,常常需要初始化data数据。...
    99+
    2024-04-02
  • go语言数组及结构体继承和初始化示例解析
    目录分类数组数组定义结构体结构体继承结构体初始化成员的操作同名字段其它匿名字段非结构体类型结构体指针类型结构体字段实现接口分类 类型名称长度默认值说明pointer指针 n...
    99+
    2024-04-02
  • 从oracle到hdfs如何初始化数据
    这篇文章主要讲解了“从oracle到hdfs如何初始化数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“从oracle到hdfs如何初始化数据”吧!### oracle GoldenGate...
    99+
    2023-06-03
  • 【Oracle】scott用户下表结构、初始化数据和建表语句
    表结构 EMP 雇员表 编号 列名 数据类型 说明 约束 1 EMPNO NUMBER(4...
    99+
    2024-04-02
  • js如何初始化数组
    这篇文章给大家分享的是有关js如何初始化数组的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。初始化数组如果想要初始化一个指定长度的一维数组,并指定默认值,可以这样:const array =&n...
    99+
    2023-06-17
  • C++ 结构体初始化与赋值详解
    目录1.结构体初始化 2.结构体赋值 参考文献 1.结构体初始化 结构体是常用的自定义构造类型,是一种很常见的数据打包方法。结构体对象的初始化有多种方式,分为顺序初始化、指定初始化...
    99+
    2024-04-02
  • C++结构体怎么创建和初始化
    这篇文章主要介绍“C++结构体怎么创建和初始化”,在日常操作中,相信很多人在C++结构体怎么创建和初始化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++结构体怎么创建和初始化”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-30
  • Swift中类与结构的初始化方法
    本篇内容主要讲解“Swift中类与结构的初始化方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Swift中类与结构的初始化方法”吧!一,结构的初始化struct FirstStruc...
    99+
    2023-06-29
  • c语言结构体指针数组怎么初始化
    在C语言中,结构体指针数组的初始化可以通过以下几种方式进行: 逐个初始化:通过逐个为每个元素赋值。例如: struct Pers...
    99+
    2023-10-27
    c语言
  • MySQL数据库服务器如何初始化
    小编给大家分享一下MySQL数据库服务器如何初始化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  风险性操作命令被强迫隐含重改...
    99+
    2024-04-02
  • go语言结构体初始化及赋值的方法是什么
    在Go语言中,结构体的初始化及赋值可以通过以下两种方法进行: 字面量初始化:直接使用结构体类型的名称,并在花括号内指定字段的初始值...
    99+
    2023-10-25
    go语言
  • 怎么在go语言中初始化结构体的成员变量
    本篇文章给大家分享的是有关怎么在go语言中初始化结构体的成员变量,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。初始化方法:1、使用“ins := 结构体类型名{字段1:值,字段...
    99+
    2023-06-15
  • Hibernate如何初始化
    小编给大家分享一下Hibernate如何初始化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Hibernate有两种配置文件格式,一种是XML,默认为hibern...
    99+
    2023-06-17
  • win10如何初始化
    这篇文章主要介绍“win10如何初始化”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win10如何初始化”文章能帮助大家解决问题。首先点击左下角开始菜单,打开“设置” 接着进入其中“更新和安全”选项...
    99+
    2023-07-02
  • Servlet如何初始化
    这篇文章主要为大家展示了“Servlet如何初始化”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Servlet如何初始化”这篇文章吧。有时候,我们需要仅仅是在服务启动,而非其他更为复杂的定时任务...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作