• Go 语言中的 Map

    本文介绍一种特殊的数据结构。它是一种元素对的无序集合,每一个索引(key)对应一个值(value),这种数据结构在 Go 语言中被称之为 map。map 是一种能够通过索引(key)迅速找到值(value)的数据结构,所以也被称为字典。在 Go 语言中因为线程安全问题,一共实现了两种类型的 map,接下来我们每种都了解一下。 Tips:线程的知识会在Go语言的多线程中讲解。   1. 无锁的map 这种类型的 map 是线程不安全的 map,多个线程同时访问这个类型的 map 的同一个…

    go开发, 技术干货 2020年9月18日
  • Go 语言中的切片

    本位主要介绍一下 Go 语言中可变长度的"数组"——切片(slice)。数组有数组的用处,但是其不可变长度的特性,注定了在大多场景下不是很受欢迎。在大多数场景下我们都会选择更加灵活的切片。   1. 切片的创建 切片的声明方式和数组类似,写法上看就是声明一个没有长度的数组:var 切片名 []切片类型。其中切片类型可以是切片本身,也就是切片的切片,就构成了多维的切片。 切片在使用之前必须要初始化,它没有零值。声明后它的值是 nil,这是因为它的底层实现是一个指向数组的指针,在你给它存入…

    go开发, 技术干货 2020年9月18日
  • Go 语言中的数组

    数组是一个可以存放相同数据类型数据的定长序列。由于数组是定长的,在使用场景并不丰富,所以在 Go 语言中通常使用的是切片(Slice)。想要使用切片,就先要了解数组,所以在本文先介绍 Go 语言中数组的使用。   1. 数组的声明 数组的声明形式形如var 数组名 [数组长度]数组类型,其中数组类型可以是数组本身,也就是数组类型的数组,这样就构成了多维数组。和变量的声明相同,数组在声明时会初始化变量类型的零值。 代码示例 代码块 1  package main 2 3  import …

    go开发, 技术干货 2020年9月18日
  • Go 语言的指针

    本文主要介绍 Go 语言中的指针。Go 语言中和 C/C++ 一样,直接提供了指针类型,但是不同的是 Go 语言的指针并没有那么高深莫测,因为它是无法进行位移和运算的,它只是一个存储了其它变量地址的变量而已。它在 Go 语言中最大的作用就是在值传递的过程中减少内存消耗,毕竟一个地址的存储开销是十分少的。   1.指针的定义和使用 在 Go 语言中指针类型的声明和 C/C++ 类似,都是采用*符号来区分正常类型变量和指针变量。 代码示例: 代码块 1  package main 2 3 …

    go开发, 技术干货 2020年9月18日
  • Go 语言中的闭包

    本文主要介绍 Go 语言中的闭包。简单的说 Go 语言的闭包就是一个引用了外部自由变量的匿名函数,被引用的自由变量和该匿名函数共同存在,不会因为离开了外部环境就被释放或者删除,还可以在这个匿名函数中继续使用。   1. Go 语言的匿名函数 在上文中我们了解到了一个新的词汇——匿名函数,我们先来学习一下Go语言中的匿名函数,再来了解在 Go 语言中如何使用闭包。匿名函数,顾名思义,就是隐藏函数名的函数。 代码示例: 代码块 1  package main 2 3  import ( 4…

    go开发, 技术干货 2020年9月18日
  • Go 语言函数中的defer

    在 Go 语言中的 defer 关键字就是 Go 语言中延迟语句的标志。Go 语言会在函数即将返回时按逆序执行 defer 后的语句。也就是说先被 defer 的语句后执行,最先执行最后被 defer 的语句。defer 和有些语言中的 finally 语句块的用法类似,一般都用于释放一些资源,最常用的地方就是进程锁的释放。 Tips:关于 defer 的进程锁的释放在 Go 语言的多线程中会有介绍。   1. defer 的逆序执行 defer 会在函数即将结束的时候执行,而且是按照…

    go开发, 技术干货 2020年9月18日
  • Go 语言中的函数

    本文来介绍 Go 语言中的函数。Go 语言的函数和其它语言的用法类似,但是 Go 语言中所有东西都是变量,包括函数,函数在 Go 语言中也是变量的一种,所以函数名的命名规则和变量名相同,同时这个和我们后面要讲解的函数式编程有关,目前本文仅介绍 Go 语言中函数的声明和使用。   1. 函数的定义和使用 Go 语言中,通过 func 关键字来声明和定义函数。Go 语言和 C 语言不同,Go 语言函数的声明和定义是一起的,不存在先声明在定义,且声明时不分前后均可互相调用。 代码示例 代码块…

    go开发, 技术干货 2020年9月18日
  • Go 语言的通道

    Go 语言中有一个特殊的类型 chan,这是在 Go 语言的多线程操作中非常重要的一个数据类型。它的一般用于线程之间的数据传输,所以这个操作类型叫做"通道(channel)"。   1. 通道的声明和定义 通道可以理解为一种特殊的变量,所以它的声明和其它变量的声明并没有太大的区别,声明通道变量的写法如下: var c chan int //声明一个存放int类型数据的通道 代码块 1 但是它声明之后并不能直接使用,需要使用内置函数 make() 来创建一下通道变量才可以使用: Tips…

    go开发, 技术干货 2020年9月18日
  • Go 语言的循环语句

    在 Go 语言中减少了循环语句的关键字,仅有一个 for 关键字。但是并没有减少其功能,而且它更是兼容了其它语言中的while关键字的用法,甚至更强大。   1. for 循环语句   1.1 普通用法 在 Go 语言中,for 循环之后一样可以跟三个语句,单次表达式;条件表达式;末尾循环体,但是它不需要使用()来包裹这三个表达式,写法上更加的简洁。同时它也和其它语言一样,可以任意省略这三个表达式。 代码示例: 代码块 1  package main 2 3  import …

    go开发, 技术干货 2020年9月18日
  • Go 语言的分支语句

    本文主要学习 Go 语言中的分支语句。一共要介绍的有两个,分别式 if…else 和 switch…case。他们二者在 Go 语言中都做了新的功能拓展。 Tips:其中还有一个分支语句select…case我们将在Go语言的通道中介绍。   1. if…else 在 Go 语言中 if 关键字的作用和其它大部分语言相同,是用于测试某个布尔表达式或布尔值是否为真的。若为真则执行if之后{}中的语句,否则跳过这些语句。如果存在第二个分支,则需要使用 else 关键字,还需要增加分支的话就…

    go开发, 技术干货 2020年9月18日
历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!