![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
GO
文章平均质量分 91
贾维斯Echo
这个作者很懒,什么都没留下…
展开
-
Gorm实战,轻松掌握数据库增删改查技巧!
CRUD通常指数据库的增删改查操作,本文详细介绍了如何使用GORM实现创建、查询、更新和删除操作。首先定义模型与数据库连接:1.1 创建记录1.2 用指定的字段创建记录创建记录并更新给出的字段。创建一个记录且一同忽略传递给略去的字段值。1.3 批量插入要有效地插入大量记录,请将一个 传递给 方法。 GORM 将生成单独一条SQL语句来插入所有数据,并回填主键的值,钩子方法也会被调用。使用 分批创建时,你可以指定每批的数量,例如:Upsert 和 Create With Associa原创 2024-01-11 22:18:14 · 562 阅读 · 0 评论 -
Go、Docker、云原生学习笔记全攻略:从零开始,一步步走向精通!(2024版)
第一章、Go语言学习宝典一、介绍01.Go 语言的前生今世二、开发环境搭建01.Go 语言开发环境搭建三、初识GO语言01.Go 多版本管理工具02.第一个 Go 程序“hello,world“ 与 main 函数03.Go 常用命令介绍04.Go 项目代码布局05.探索 GO 项目依赖包管理与Go Module常规操作四、GO基础语法基本数据类型01.Go基础之变量和常量02.Go 基本数据类型和 string 类型介绍03.Go语言基础之基本运算符五、复合类型01.Go基原创 2024-01-08 17:54:18 · 667 阅读 · 0 评论 -
Go 接口:Go中最强大的魔法,接口应用模式或惯例介绍
通过这种垂直组合,我们可以达到方法实现的复用、接口定义重用等目的。在实现层面,Go 语言通过类型嵌入(原创 2023-11-09 20:53:42 · 257 阅读 · 0 评论 -
Go 接口:nil接口为什么不等于nil?
接口的静态特性体现在接口类型变量具有静态类型。比如中变量err的静态类型为error。拥有静态类型,那就意味着编译器会在编译阶段对所有接口类型变量的赋值操作进行类型检查,编译器会检查右值的类型是否实现了该接口方法集合中的所有方法。**而接口的动态特性,就体现在接口类型变量在运行时还存储了右值的真实类型信息,这个右值的真实类型被称为接口类型变量的动态类型。我们可以看到,这个示例通过errros.New构造了一个错误值,赋值给了error接口类型变量err,并通过fmt.Printf函数输出接口类型变量err。原创 2023-11-08 20:28:33 · 466 阅读 · 0 评论 -
Go 接口-契约介绍
TOC]接口是一种抽象类型,它定义了一组方法的契约,它规定了需要实现的所有方法。是由type和interface关键字定义的一组方法集合,其中,方法集合唯一确定了这个接口类型所表示的接口。一个接口类型通常由一组方法签名组成,这些方法定义了对象必须实现的操作。接口的方法签名包括方法的名称、输入参数、返回值等信息,但不包括方法的实际实现。上面的代码定义了一个名为Writer的接口,它有一个Write方法,该方法接受一个[]byte类型的参数并返回两个值,一个整数和一个错误。任何类型只要实现了这个Write。原创 2023-11-06 23:23:28 · 298 阅读 · 0 评论 -
Go类型嵌入介绍和使用类型嵌入模拟实现“继承”
TOC]什么是独立的自定义类型呢?就是这个类型的所有方法都是自己显式实现的。我们举个例子,自定义类型T有两个方法M1和M2,如果T是一个独立的自定义类型,那我们在声明类型T难道还有某种自定义类型的方法不是自己显式实现的吗?让某个自定义类型“继承”其他类型的方法实现。类型嵌入指的就是在一个类型的定义中嵌入了其他类型。Go 语言支持两种类型嵌入,分别是接口类型的类型嵌入和结构体类型的类型嵌入。接口类型的类型嵌入是指在一个接口类型的定义中嵌入其他接口类型,从而使接口类型包含了嵌入接口中定义的方法。原创 2023-11-05 14:51:28 · 231 阅读 · 0 评论 -
Go 方法集合与选择receiver类型
如果说前面的两个原则更多聚焦于类型内部,从单个方法的实现层面考虑,那么这第三个原则则是更多从全局的设计层面考虑,聚焦于这个类型与接口类型间的耦合关系。接口类型相对特殊,它只会列出代表接口的方法列表,不会具体定义某个方法,它的方法集合就是它的方法列表中的所有方法,我们可以一目了然地看到。如果 T 类型需要实现某一接口的全部方法,那么我们就需要使用 T 作为 receiver 参数的类型来满足接口类型方法集合中的所有方法。Go 中任何一个类型都有属于自己的方法集合,或者说方法集合是 Go 类型的一个“属性”。原创 2023-11-04 22:57:27 · 296 阅读 · 0 评论 -
Go 方法介绍,理解“方法”的本质
TOC]我们知道,Go 语言从设计伊始,就不支持经典的面向对象语法元素,比如类、对象、继承,等等,但 Go 语言仍保留了名为“方法(method)”的语法元素。当然,Go 语言中的方法和面向对象中的方法并不是一样的。Go 引入方法这一元素,并不是要支持面向对象编程范式,而是 Go 践行组合设计哲学的一种实现层面的需要。在 Go 编程语言中,方法是与特定类型相关联的函数。它们允许您在自定义类型上定义行为,这个自定义类型可以是结构体(struct)或任何用户定义的类型。原创 2023-11-04 21:55:30 · 518 阅读 · 0 评论 -
Go 常用标准库之 fmt 介绍与基本使用
函数用于从标准输入中获取用户的输入,并将输入的数据存储在变量中,每行一个变量。这些函数允许你与用户交互,从标准输入流中读取不同类型的数据并将其存储在相应的变量中。Scanf从标准输入扫描文本,根据format参数指定的格式去读取由空白符分隔的值保存到传递给本函数的参数中。函数用于从标准输入中获取用户的输入,并将输入的数据存储在变量中。Scan从标准输入扫描文本,读取由空白符分隔的值保存到传递给本函数的参数中,换行符视为空白符。提供了多种用于输出的函数,每个函数都有不同的用途和输出方式。原创 2023-10-25 21:48:39 · 591 阅读 · 0 评论 -
Go 包操作之如何拉取私有的Go Module
另外,对于私有 Go Module,开发机只需要将它配置到 GOPRIVATE 环境变量中就可以了,这样,Go 命令在拉取私有 Go Module 时,就不会再走 GOPROXY,而会采用直接访问 vcs(如上图中的 git.yourcompany.com)的方式拉取私有 Go Module。,新版本的 Go 在一个 repo 下管理多个 Go Module 方面,已经有了长足的进步,我们已经可以通过 repo 的 tag 来区别同一个 repo 下的不同 Go Module。原创 2023-10-25 11:33:10 · 697 阅读 · 0 评论 -
Go包介绍与初始化:搞清Go程序的执行次序
在上图里,pkg1 包依赖 pkg2 包,pkg2 包依赖 pkg3 包,pkg3 没有依赖包,于是 Go 在 pkg3 包中按照“常量 -> 变量 -> init 函数”的顺序先对 pkg3 包进行初始化;”的顺序,来对 Go 程序的各个包进行初始化的,而在包内,则是以“常量 -> 变量 -> init 函数”的顺序进行初始化。在Go语言中,你可以使用包的别名(package alias)来为一个导入的包赋予一个不同的名称,以便在代码中引用它。函数是在Go包的初始化阶段自动调用的函数。原创 2023-10-20 22:46:42 · 514 阅读 · 0 评论 -
Go 函数的健壮性、panic异常处理、defer 机制
而且,这里资源释放函数的 defer 注册动作,紧邻着资源申请成功的动作,这样成对出现的惯例就极大降低了遗漏资源释放的可能性,我们开发人员也不用再小心翼翼地在每个错误处理分支中检查是否遗漏了某个资源的释放动作。这样一来,foo 函数的执行也被停止了。前者测量的是带有 defer 的函数执行的性能,后者测量的是不带有 defer 的函数的执行的性能。接着,我们继续用上面这个例子分析,在触发 panic 的 bar 函数中,对 panic 进行捕捉并恢复,我们直接来看恢复后,整个程序的执行情况是什么样的。原创 2023-10-19 22:57:13 · 643 阅读 · 0 评论 -
Go 函数多返回值错误处理与error 类型介绍
不同的是,如果 error 类型变量的底层错误值是一个包装错误(Wrapped Error),errors.Is 方法会沿着该包装错误所在错误链(Error Chain),与链上所有被包装的错误(Wrapped Error)进行比较,直至找到一个匹配的错误为止。这种情况下,我们需要通过自定义错误类型的构造错误值的方式,来提供更多的“错误上下文”信息。这也就意味着,错误值构造方不经意间的一次错误描述字符串的改动,都会造成错误处理方处理行为的变化,并且这种通过字符串比较的方式,对错误值进行检视的性能也很差。原创 2023-10-18 22:21:01 · 468 阅读 · 0 评论 -
Go 匿名函数与闭包
是一种没有名字的函数,它通常用于一次性的、小规模的操作。闭包是指一个函数,它包含对其外部作用域的变量的引用。这意味着闭包可以访问并操作其外部作用域中的变量,即使在外部函数已经返回后仍然可以操作这些变量。在Go语言中,匿名函数通常用作闭包。当一个匿名函数引用外部作用域的变量时,它形成了一个闭包。匿名函数和闭包是一些编程语言中的重要概念,它们在Go语言中也有重要的应用。,它返回一个匿名函数。这个匿名函数形成了一个闭包,它可以访问并修改外部函数中的。匿名函数多用于实现回调函数和闭包。因此,每次调用匿名函数时,原创 2023-10-15 22:06:28 · 408 阅读 · 0 评论 -
Go函数介绍与一等公民
到这里,我们已经可以看到,Go 函数确实表现出了沃德·坎宁安诠释中“一等公民”的所有特征:Go 函数可以存储在变量中,可以在函数内创建并通过返回值返回,可以作为参数传递给其他函数,可以拥有自己的类型。显然,Go 语言的闭包特性也是建立在“函数是一等公民”特性的基础上的。从这段代码中我们也可以看到,setup 函数中创建的拆除函数也是一个匿名函数,但和前面我们看到的匿名函数有一个不同,这个不同就在于这个匿名函数使用了定义它的函数 setup 的局部变量 task,这样的匿名函数在 Go 中也被称为。原创 2023-10-14 00:31:22 · 316 阅读 · 0 评论 -
go 流程控制之switch 语句介绍
到这里,我们看到 Go 的 switch 语句不仅修复了 C 语言 switch 的缺陷,还为 Go 开发人员提供了更大的灵活性,我们可以使用更多类型表达式作为 switch 表达式类型,也可以使用 case 表达式列表简化实现逻辑,还可以自行根据需要,确定是否使用 fallthrough 关键字继续向下执行下一个 case 的代码分支。在带有表达式列表的 case 语句中,Go 会从左到右,对列表中的表达式进行求值,比如示例中的 case2_1 函数就执行于 case2_2 函数之前。原创 2023-10-12 23:58:01 · 351 阅读 · 1 评论 -
Go 循环之for循环,仅此一种
这个例子说的是对一个数组 a 的元素进行遍历操作,当处理下标为 0 的元素时,我们修改了数组 a 的第二个和第三个元素的值,并且在每个迭代中,我们都将从 a 中取得的元素值赋值给新数组 r。我们看到,Goroutine 中输出的循环变量,也就是 i 和 v 的值都是 for range 循环结束后的最终值,而不是各个 Goroutine 启动时变量 i 和 v 的值,与我们最初的“预期”不符,这是为什么呢?语句形式中循环前置语句的循环变量,它们的初值分别为切片 sl 的第一个元素的下标值和元素值。原创 2023-10-12 01:26:29 · 202 阅读 · 0 评论 -
Go 复合类型之字典类型介绍
当某个 bucket(比如 buckets[0]) 的 8 个空槽 slot)都填满了,且 map 尚未达到扩容的条件的情况下,运行时会建立 overflow bucket,并将这个 overflow bucket 挂在上面 bucket(如 buckets[0])末尾的 overflow 指针上,这样两个 buckets 形成了一个链表结构,直到下一次 map 扩容之前,这个结构都会一直存在。你看,作为初值的字面值采用了复合类型的元素类型,而且在编写字面值时还带上了各自的元素类型,比如作为。原创 2023-10-10 22:46:24 · 624 阅读 · 0 评论 -
Go 复合类型之切片类型介绍
然后,第三步,我们通过 append 操作向切片 s 添加了第三个元素 13,这时 len(s) = 2,cap(s) = 2,append 判断底层数组剩余空间不能满足添加新元素的要求了,于是又创建了一个新的底层数组 u3,长度为 4(u2 数组长度的 2 倍),并把 u2 中的元素拷贝到 u3 中,最后把 s 内部表示中的 array 指向 u3,并设置 len = 3, cap 为 u3 数组长度,也就是 4;切片的容量可以大于其长度,底层数组容纳了更多的元素,但只有切片的长度部分是可见的。原创 2023-10-08 23:35:21 · 182 阅读 · 0 评论 -
Go语言中的指针介绍
指针是一个存储变量内存地址的变量。它们允许程序直接访问和操作内存中的数据,而不是对数据的副本进行操作。每个变量在计算机内存中都有一个唯一的地址,指针存储了这个地址。用于存储其他变量地址的变量称为指针变量。可以使用取地址操作符来获取变量的地址。可以使用解引用操作符来访问指针所指向的变量的值。*int*int64*string等。原创 2023-10-06 22:16:59 · 808 阅读 · 0 评论 -
Go 复合数据类型之结构体与自定义类型
在Go中,可以通过使用关键字type来自定义一个新类型,有两种常见的方法:类型定义(Type Definition)和类型别名(Type Alias)。类型定义是通过将一个已有的类型声明为一个新的类型的方式,可以将一个现有类型的特性和方法继承给新类型。这个新类型具有原有类型的所有方法和属性,但它们是不同的类型。// 使用类型定义创建新类型 type MyInt intMyInt就是一种新的类型,它具有int的特性。如果一个新类型是基于某个 Go 原生类型定义的,那么我们就叫Go 原生类型为新类型的。原创 2023-10-06 17:51:06 · 457 阅读 · 0 评论 -
Go基础之变量和常量
包级变量 (package varible),也就是在包级别可见的变量。如果是导出变量(大写字母开头),那么这个包级变量也可以被视为全局变量包级变量只能使用带有 var 关键字的变量声明形式,不能使用短变量声明形式,但在形式细节上可以有一定灵活度。局部变量 (local varible),也就是 Go 函数或方法体内声明的变量,仅在函数或方法体内可见它们的生命周期仅限于函数执行期间。相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。常量的声明和变量声明非常类似,只是把var换成了。原创 2023-10-04 23:21:41 · 336 阅读 · 0 评论 -
Go 基本数据类型和 string 类型介绍
整型溢出指的是在整型变量所能表示的数值范围之外的值。整型变量通常有最大值和最小值限制无论哪种整型,都有它的取值范围,也就是有它可以表示的值边界。如果这个整型因为参与某个运算,导致结果超出了这个整型的值边界,我们就说发生了整型溢出的问题。由于整型无法表示它溢出后的那个“结果”,所以出现溢出情况后,对应的整型变量的值依然会落到它的取值范围内,只是结果值与我们的预期不符,导致程序逻辑出错。s += 1 // 预期128,实际结果-128u -= 2 // 预期-1,实际结果255你看,有符号整型变量s。原创 2023-10-03 23:22:02 · 227 阅读 · 0 评论 -
探索 GO 项目依赖包管理与Go Module常规操作
go mod download 下载依赖的module到本地cache(默认为 $GOPATH /pkg/mod目录)go mod edit 编辑go.mod文件go mod graph 打印模块依赖图go mod init 初始化当前文件夹, 创建go.mod文件go mod tidy 增加缺少的module,删除无用的modulego mod vendor 将依赖复制到vendor下go mod verify 校验依赖go mod why 解释为什么需要依赖。原创 2023-09-25 00:03:45 · 400 阅读 · 0 评论 -
Go 常用命令介绍
是 Go 编程语言的一个静态分析工具,用于检查 Go 代码中可能包含的潜在错误、不规范的代码和常见问题。是完全不一样的命令,通过分析源码中特殊的注释,然后执行相应的命令。时,它会编译当前目录中的 Go 代码,并将生成的二进制可执行文件放置在你的 Go 工作空间的。命令的主要目的是使代码在不同项目和团队中保持一致的风格,提高代码的可读性和可维护性。是没有任何空格的,这其实就是一个固定的格式,在扫描源码文件的时候就是根据这个来判断的。Go的测试是通过在与被测试的代码文件相同目录下的。: 检查复制锁的问题。原创 2023-09-22 23:32:00 · 1377 阅读 · 0 评论 -
第一个 Go 程序“hello,world“ 与 main 函数
所有 Go 代码都有自己隶属的包,在这里我们的“hello,world”示例的所有代码都在一个名为 main 的包中。main 包在 Go 中是一个特殊的包,通常导入路径的最后一个分段名与包名是相同的,这里很容易让人误解 import 声明语句中的“fmt”指的是包名,其实并不是这样的,只有 fmt.Println 函数调用一行中的“fmt”代表的则是包名。main 函数体中之所以可以调用 fmt 包的 Println 函数,还有最后一个原因,那就是 Println 函数名的首字母是大写的。原创 2023-09-21 22:09:37 · 510 阅读 · 1 评论 -
Go 多版本管理工具
在平时开发中,本地新旧项目并行开发的过程中,你大概率会遇到一个令人头疼的问题,如何同时使用两个不同版本的 Golang Runtime 进行开发呢?原创 2023-09-21 20:51:17 · 982 阅读 · 1 评论 -
Go 数组与切片
定义:切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。切片是一个引用类型,它的内部结构包含地址长度和容量。切片一般用于快速地操作一块数据集合。其中,name:表示变量名type:表示切片中的元素类型// 声明整型切片 var numList [ ] int // 声明一个空切片 var numListEmpty = [ ] int {原创 2023-03-19 23:30:04 · 259 阅读 · 0 评论 -
Go 项目代码布局
上面的结果来看,src 目录下面的结构有这三个特点首先,以 all.bash 为代表的代码构建的脚本源文件放在了 src 下面的顶层目录下可以看到,这里的每个子目录都是一个 Go 工具链命令或子命令对应的可执行文件。其中,6a、6c、6g 等是早期 Go 版本针对特定平台的汇编器、编译器等的特殊命名方式。第三个特点,你会看到 src 下的二级目录 pkg 下面存放着运行时实现、标准库包实现,这些包既可以被上面 cmd 下各程序所导入,也可以被 Go 语言项目之外的 Go 程序依赖并导入。原创 2022-11-09 21:05:33 · 309 阅读 · 0 评论 -
Go 语言特性与设计哲学
设计哲学之与编程语言,就好比一个人的价值观和这个人的行为。因为如果你不认同一个人的价值观,那你其实很难与之持续交往下去,即所谓道不同不相为谋。类似的,如果你不认同一门编程语言的设计哲学,那么大概率你在后续的语言学习中,就会遇到上面提到的这些问题,而且可能会让你失去继续学习的精神动力。Go 语言的设计哲学分为五点:简单、显式、组合、并发和面向工程。原创 2022-11-08 23:19:11 · 220 阅读 · 0 评论 -
Go高级之Map实现原理
16.Go高级之Map实现原理一、Map实现原理概述笼统的来说,go的map底层是一个hash表(HashMap),表面上看map只有键值对结构,实际上在存储键值对的过程中涉及到了数组和链表。HashMap之所以高效,是因为其结合了顺序存储(数组)和链式存储(链表)两种存储结构。数组是HashMap的主干,在数组下有一个类型为链表的元素。哈希函数会将传入的key值进行哈希运算,得到一个唯一的值。二、Map实现原理1. 什么是Mapkey,value存储最通俗的话说Map是一种通过key来获取v原创 2021-06-20 23:33:33 · 1164 阅读 · 1 评论 -
Golang内置类型和函数
Golang内置类型和函数文章目录Golang内置类型和函数一、内置类型1. 值类型:2. 引用类型:(指针类型)二、内置函数三、内置接口error一、内置类型1. 值类型: bool int(32 or 64), int8, int16, int32, int64 uint(32 or 64), uint8(byte), uint16, uint32, uint64 float32, float64 string complex64, complex1原创 2021-06-20 17:56:39 · 294 阅读 · 1 评论 -
GO语言之Init函数和main函数
00.Init函数和main函数一、init函数go语言中init函数用于包(package)的初始化,该函数是go语言的一个重要特性。有下面的特征:init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等每个包可以拥有多个init函数包的每个源文件也可以拥有多个init函数同一个包中多个init函数的执行顺序go语言没有明确的定义(说明)不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序init函数不能被其他函数调用,而是在main函数执行之前,自动被调用原创 2021-06-20 17:38:06 · 423 阅读 · 0 评论 -
Go语言的主要特征
Go语言的主要特征文章目录Go语言的主要特征一、golang 简介1.来历2.核心思想3.优点4.Go语言的主要特征:5.Golang文件名:6.Go语言命名:命名规则Go只有25个关键字Go还有37个保留字可见性:7.Go语言声明:8.Go项目构建及编译9.go 编译问题一、golang 简介1.来历很久以前,有一个IT公司,这公司有个传统,允许员工拥有20%自由时间来开发实验性项目。在2007的某一天,公司的几个大牛,正在用c++开发一些比较繁琐但是核心的工作,主要包括庞大的分布式集群,大牛觉转载 2021-06-20 17:33:23 · 346 阅读 · 0 评论 -
GO基础之关于切片操作的技巧
15.GO基础之关于切片操作的技巧文章目录15.GO基础之关于切片操作的技巧一、切片的常用技巧复制剪切删除剪切或删除操作可能引起的内存泄露剪切删除删除但不保留元素原有顺序内部扩张尾部扩张过滤插入追加弹出前插二、其他技巧过滤而不分配内存翻转洗牌使用最小分配进行批处理原地删除重复元素(元素可比较)存在就移到前面,不存在就插入到前面滑动窗口一、切片的常用技巧复制将切片a中的元素复制到切片b中。最简单的、最常用的方法就是使用内置的copy函数。b = make([]T, len(a)) // 一次将内原创 2021-06-18 21:50:34 · 365 阅读 · 0 评论 -
Go语言之依赖管理
03.Go语言之依赖管理Go语言的依赖管理随着版本的更迭正逐渐完善起来。文章目录03.Go语言之依赖管理一、依赖管理为什么需要依赖管理二、godep1.介绍2.安装3.基本命令4.使用godep5.Vender机制6.godep开发流程三、go module1. GO111MODULE2.GOPROXY3. go mod命令4.go.mod文件介绍依赖的版本replace5.整理依赖6.go mod edit格式化添加依赖项移除依赖项四、在项目中使用go module1.既有项目2.新项目一、依赖管原创 2021-06-18 21:15:11 · 357 阅读 · 0 评论 -
Go语言基础之函数
14.Go语言基础之函数文章目录14.Go语言基础之函数一、函数go函数特点二、函数定义三、函数的调用四、参数1.类型简写2.可变参数五、返回值多返回值返回值命名空白符返回值补充六、函数进阶变量作用域全局变量局部变量七、函数类型与变量1.定义函数类型2.函数类型变量八、高阶函数1.函数作为参数2.函数作为返回值九、匿名函数和闭包1.匿名函数2.闭包十、defer语句1.defer语句2.defer执行时机3.defer经典案例4.defer 经典面试题十一、内置函数介绍十二、panic/recover十三原创 2021-06-18 20:45:38 · 379 阅读 · 0 评论 -
Go语言基础之map
13.Go语言基础之mapGo语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。文章目录13.Go语言基础之map一、map二、map定义三、map基本使用四、判断某个键是否存在五、Map的遍历六、使用delete()函数删除键值对七、按照指定顺序遍历map八、元素为map类型的切片九、值为切片类型的map十、Map的相等性十一、Map 是引用类型十二、小练习一、mapmap是一种无序的基于key-value的数据结构,类似于python中的字典。Go语言中的map是引用类型,原创 2021-06-17 21:33:45 · 1978 阅读 · 1 评论 -
Go基础之切片
10.Go基础之切片文章目录10.Go基础之切片一、引入二、切片(Slice)概述三、切片的定义四、切片的初始化五、切片的长度和容量六、使用make()函数构造切片七、切片的本质八、判断切片是否为空九、切片表达式简单切片表达式完整切片表达式十、切片不能直接比较十一、切片的赋值拷贝十二、切片遍历十三、append()方法为切片扩容添加元素十四、切片的扩容策略十五、使用copy()函数复制切片十六、从切片中删除元素十七、小练习一、引入因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限原创 2021-06-17 00:07:53 · 289 阅读 · 0 评论 -
Go语言基础之下划线
09.Go基础之下划线“_”是特殊标识符,用来忽略结果文章目录09.Go基础之下划线下划线在import中下划线在代码中下划线在import中 在Golang里,import的作用是导入其他package。import 下划线(如:import _ hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 import _ 引用该包。即使用【import _原创 2021-06-15 23:57:56 · 969 阅读 · 0 评论