`

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

 
阅读更多

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
<!-- 336x280 --> <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>

转载请注明:快乐编程 » Go语言的复合数据类型struct,array,slice,map

分享到:
评论

相关推荐

    Go 语言数据类型.docx

    本文将详细介绍Go语言中的数据类型,包括基本数据类型和复合数据类型。 #### 二、基本数据类型 基本数据类型是指在Go语言中直接支持的数据类型,它们不需要额外的定义或构造即可使用。主要包括以下几类: 1. **...

    学习Go语言

    此外,Go语言还支持复合数据类型,如数组(array)、切片(slice)、映射(map)和结构体(struct)等。 #### 运算符和内置函数 Go语言支持多种运算符,包括算术运算符、比较运算符、逻辑运算符和位运算符等。此外,Go语言...

    Go语言基础、进阶、提高课程第六节 Go语言结构体,切片,map,游戏用户留存1

    在Go语言中,结构体(Struct)是一种复合数据类型,用于封装多个相关变量,这些变量可以具有不同的数据类型。在上述课程中,我们看到结构体的定义和使用方法。Go语言允许我们在结构体中定义任意类型的成员,包括基本...

    Go 学习笔记 第四版 pdf

    ### 复合数据类型 #### 数组(Array) 数组是Go语言中最基本的数据结构之一,它是一组固定长度的相同类型的元素集合。 示例: ```go data := [3]int{0, 1, 2} ``` #### 切片(Slice) 切片是数组的一个连续片段,它...

    一通百通,Go语言入门如此轻松.pdf

    Go语言中的数据类型分为基础类型和复合类型两大类: - **基础类型**: - **布尔类型**(bool):只有两个值:true和false。 - **数字类型**:支持整数(int)、浮点数(float)、复数(complex)。 - **字符串类型**...

    Go语言练习(贪吃蛇案例)

    - **数据类型**:包括基本类型如整型(int),浮点型(float32/64),字符串(string),布尔型(bool)等,以及复合类型如数组(array),切片(slice),映射(map),结构体(struct)等。 - **控制流**:Go语言提供了`if`,`...

    go语言LeetCode刷题最全手册

    Go语言中支持的数据结构包括: 数组(Array):一组具有相同类型的数据元素的集合,通过下标进行访问。 切片(Slice):动态数组,可以根据需要增加或删除元素,支持切片操作。 映射(Map):一组键值对的无序...

    关于go语言的入门材料

    - 复合类型:数组(array)、切片(slice)、映射(map)、结构体(struct)。 - 指针类型:通过`*`操作符表示,如`var ptr *int`。 5. **接口(Interface)** Go语言的接口是一种抽象类型,它定义了一组方法...

    go语言编程实践

    此外还包括数组(`array`)、结构体(`struct`)、字符串(`string`)、切片(`slice`)、映射(`map`)、通道(`channel`)、接口(`interface`)等复合类型。 - **布尔类型**:只有两个可能的值:`true`和`false`。 - **整型**...

    基于Go语言的学习笔记(附代码)

    Go语言,又称为Golang,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。本学习笔记主要涵盖了Go语言的基础知识,包括类型、表达式、函数、数据结构、方法、接口、并发以及包管理等...

    go基本功go基本功go基本功go基本功

    它还支持复合类型,如数组(array)、切片(slice)、映射(map)和结构体(struct)。数组长度固定,而切片则可动态扩展。 三、控制结构 Go中的控制结构包括条件语句(if-else)、循环(for、while)、switch和...

    Go 语言编程 + Go 学习笔记

    Go 语言编程 + Go 学习笔记, 第 部分 语 第 1 章 类型 1.1 变量 1.2 常量 1.3 基本类型 1.4 引 类型 1.5 类型转换 1.6 字符串 1.7 指针 1.8 定义类型 第 2 章 表达式 2.1 保留字 2.2 运算符 2.3 初始化 2.4 控制流 ...

    go语言中文PDF文档

    Go语言支持多种数据类型,如整型(int)、浮点型(float64)、字符串(string)等。变量声明可以使用`var`关键字,也可以使用更简洁的`:=`操作符。此外,Go语言还有一系列保留字,如`if`、`else`、`for`等。 ```go var a ...

    Go语言基础讲解.pdf

    Go语言的基本类型: * 布尔型:bool + 长度:1字节 + 取值范围:true, false + 注意事项:不可以用数字代表true或false * 整型:int/uint + 根据运行平台可能为32或64位 * 8位整型:int8/uint8 + 长度:1字节 ...

    无闻Go语言视频教程

    Google出品的GO语言,最近有火起来的趋势。据众大神说,GO语言弥补了C和C++还其他语言的缺陷,颇有白富美的感觉。 网络上搜索了一番,发现【吾爱】上并没有GO语言的视频下载,其他站点也很少提供GO语言的视频教学。 ...

    Go语言四十二章经

    2. **数组(Array)**:数组是一种固定长度的数据类型,Go语言中的数组大小在声明时必须确定。 ### 切片与字典 1. **切片(slice)**:切片是一种灵活的数据结构,可以动态调整长度。 2. **字典(Map)**:字典是无序...

    go学习笔记

    Go语言提供了多种数据结构,如数组(array)、切片(slice)、映射(map)、结构体(struct)等,它们都有各自的特性和用途。 并发编程: Go语言的并发模型基于goroutine和channel。goroutine是一种轻量级的线程,...

    formam:一个用于在Go中将表单的值解码为struct的包

    福马姆 一个Go包,用于解码HTTP表单和查询参数。 唯一的要求是或更高版本。 特征 maps , structs和slices无限嵌套。 在地图的值和键中支持... 附加到slice和array类型,但未明确指示索引。 注册自定义类型

    Go 语言的指针的学习笔记

    Go语言的指针是一种特殊的数据类型,允许存储变量的内存地址。Go语言中的指针概念与C语言类似,但在使用上有一些差异。Go语言的指针不能进行算术运算,例如不能对指针进行加减操作。指针在Go语言中通常用于需要改变...

Global site tag (gtag.js) - Google Analytics