首页 > 其他分享 >Go语言的复合数据类型struct,array,slice,map

Go语言的复合数据类型struct,array,slice,map

时间:2023-01-05 17:37:00浏览次数:38  
标签:map arr slice int fmt 数据类型 user tom Println


1、结构体 struct

定义格式:



type 结构体名称 struct {
属性1 类型
属性2 类型
...
}



结构体的初始化可以使用new关键词和var关键词,不同的是如果使用new,则返回类型是一个指针,使用var,则是结构体自身。


type User struct {
name string
age int
}

user := new(User)
user.name = "tom"
user.age = 20

fmt.Println(user) //输出&{tom 20}

上例中使用new来初始化一个结构体,user的类型就是*User,在输出内容中的&字符号也表现了这点。接下来看下使用var的情况:


type User struct {
name string
age int
}

var user User
user.name = "tom"
user.age = 20

fmt.Println(user) //输出{tom 20}



这里输出中没有&符号了。

如果结构体属性比较多,每个属性初始化都要一行,代码就显的比较冗长,Go语言提供更简洁的写法:

type User struct {
name string
age int
}

user := User{"tom", 20} //按顺序给属性赋值
//user := User{age: 20, name: "tom"} //指明属性赋值
fmt.Println(user)

要注意的就是如果不指明属性,就是按照结构体内属性的先后顺序进行赋值。

2、数组 array

数组使用很广泛,很多语言都有会有数组的实现。

定义格式:


[长度]类型{初始化值}



其中长度可以省略或者换成三个点“…”,如果这么做的话,系统会根据初始化的值自动定义数组的长度。

简单的示例:


arr := [2]int{3, 2}
//arr := []int{3, 2}
//arr := [...]int{3, 2}
fmt.Println(arr) //输出[3 2]


如果指明了长度,但是没有初始值,则会根据数组类型初始化每个值


arr := [5]int{}
fmt.Println(arr) //输出[0 0 0 0 0]


3、切片 slice

切片可以和数组很好的配合使用,可以用来获取数组中一段数据。格式:


数组变量[开始索引:结束索引]


其中不包括结束索引。


arr := [5]int{3,4,5,6,7}
slice := arr[0:3]
fmt.Println(slice) //输出[3 4 5]


切片也可以用于字符串:


str := "Anny is a beautiful girl."
fmt.Print(str[0:6]) //输出Anny i


4、字典 map

在Go语言数组中,字符串是不能做键值的,我觉着字典很好的弥补了这个不足。

字典定义格式:

map[键类型] 值类型 {
键: 值,
....
}


一个简单示例:


ages := map[string] int {
"tom": 21,
"anny": 18,
}

fmt.Println(ages["tom"])


使用字典时,还能动态添加字典元素,也很方便。


ages := map[string] int {
"tom": 21,
"anny": 18,
}

ages["jack"] = 20

fmt.Println(len(ages))


如果键在字典里是不存在的,则返回一个默认值,默认值根据不同的类型决定。


ages := map[string] int {
"tom": 21,
"anny": 18,
}

fmt.Println(ages["jack"]) //输出0


<iframe id="aswift_1" style="left: 0px; top: 0px; position: absolute;" name="aswift_1" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="336" height="280"></iframe>


标签:map,arr,slice,int,fmt,数据类型,user,tom,Println
From: https://blog.51cto.com/kenkao/5991623

相关文章

  • Java中的List、Set、Map
         本文主要介绍java中list,set和map的区别。<!--Error-->List按对象进入的顺序保存对象,不做排序或编辑操作。Set对每个对象只接受一次,并使用自己内部......
  • Mapper that could not be found
    现象1mapper资源扫不到resources建的是目录,不是package所以如果直接a.b的方式创建,会扫描不到mapper.xml文件现象2缺少配置文件HisDruidConfigSpringBoo......
  • Unity小地图Minimap制作全面功能介绍篇
    本系列文章将讲述如何制作小地图。功能如下:  小地图的局部放大地图,缩小功能。小地图展开成为大地图,以及与大地图的互相切换  大地图的人物图标跟随角色旋转和移动 ......
  • MapReduce详解
    1 MapReduce是什么​​Hadoop​---MapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具......
  • Hadoop中的MapReduce框架
    一个MapReduce作业通常会把输入的数据集切分为若干独立的数据块,由Map任务以完全并行的方式去处理它们。          框架会对Map的输出......
  • 浅谈一下go语言中的slice及其一些小坑
    数组数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。虽然数组元素可以被修改,但是数组长度是固定的,而且在go语言中数组的长度也是数组类......
  • python组合数据类型(容器数据类型)
    全!python组合数据类型(容器类型)组合数据类型为python解释器中内置的标准类型,包含组合数据类型在内的内置标准类型有:数字、序列、映射、类等等序列类型三种基本序列类......
  • Python的保留字、标识符、变量的定义、常用数据类型、数据类型转换
    Python包含的保留字可以执行如下命令进行查看:importkeyword#keyword关键词print(keyword.kwlist)#输出关键词运行结果:['False','None','True','and','as'......
  • 09-简单数据类型和复杂数据类型
    简单数据类型简单数据类型null,返回的是一个空的对象object如果有个变量以后打算存储为对象,暂时没想好放啥,这个时候可以放null简单数据类型是存放在栈里面,里面......
  • JavaScript数据类型转换
    JavaScript数据类型1<!DOCTYPEhtml>2<html>3<head>4<metacharset="utf-8"content="text/html">5<title>javascript数据类型转换<......