Golang
文章平均质量分 78
.
小明的笔记仓库
转载笔记来自互联网资料整理。
仅供个人学习用途。
展开
-
Go语言优质资源
博客: 归档 | 李文周的博客 Go 语言基础语法 | 菜鸟教程视频:最新Go语言急速入门视频教程(七米出品)_哔哩哔哩_bilibili 8小时转职Golang工程师(如果你想低成本学习Go语言)_哔哩哔哩_bilibili 【Go语言系列视频】老男孩带你21周搞定Go语言【全 242】_哔哩哔哩_bilibili .....................原创 2022-02-20 20:25:59 · 801 阅读 · 0 评论 -
go中的单例模式
在过去的几年中,Go语言的发展是惊人的,并且吸引了很多由其他语言(Python、PHP、Ruby)转向Go语言的跨语言学习者。 Go语言太容易实现并发了,以至于它在很多地方被不正确的使用了。在过去的几年中,Go语言的发展是惊人的,并且吸引了很多由其他语言(Python、PHP、Ruby)转向Go语言的跨语言学习者。在过去的很长时间里,很多开发人员和初创公司都习惯使用Python、PHP或Ruby快速开发功能强大的系统,并且大多数情况下都不需要担心内部事务如何工作,也不需要担心线程安全性和并发性。直到最近几年转载 2022-12-04 18:11:37 · 238 阅读 · 0 评论 -
go读书笔记
参看这些项目的顺序完全由你自己决定,不过我建议从“贴近你实际工作的那个方面”入手,然后可以是“你感兴趣的方面”,最后有机会再看其他的项目。重要的是真正的理解和积极的实践,而不是阅读的速度。我希望我的专栏文章也可以达成这样的一种状态:它是你需要时,即能查阅的知识手册。利用这种快速的学习方式,你往往可以在有限的精力和无限的知识之间做出适合你的权衡。别忘了,阅读优秀的项目源码也是一个很重要的学习途径。如此一来,当想到或遇到某方面的疑惑的时候,你就可以有一个大致的方向,并且知道怎样从专栏里找出相应的内容。原创 2022-10-19 16:24:31 · 135 阅读 · 0 评论 -
go踩坑——no required module provides package : go.mod file not found in current directory or any parent
报错:no required module provides package : go.mod file not found in current directory or any parent directory;原创 2022-07-03 18:31:23 · 22963 阅读 · 4 评论 -
好看的代码注释
代码注释原创 2021-12-26 10:45:52 · 565 阅读 · 0 评论 -
Golang 注释规范
注释的意义#注释可以帮我们很好的完成文档的工作,写得好的注释可以方便我们以后的维护。 /**/ 的块注释和 // 的单行注释两种注释风格, 在我们的项目中为了风格的统一,全部使用单行注释,注释的质量决定了生成的文档的质量。 下面从包注释、结构体(接口)注释、函数(方法)注释、代码逻辑注释以及注释规范方面进行说明。包注释#每个包都应该有一个包注释,一个位于 package 子句之前行注释 包注释应该包含下面基本信息// @Title 请填写文件名称(需要改)// @Descriptio原创 2021-12-26 10:48:58 · 1398 阅读 · 0 评论 -
【代码规范】常见注释规范
1.在有处理逻辑的代码中,源程序有效注释量必须在20%以上。说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。2.文件注释:文件注释写入文件头部。说明:以/* 开始示例:/ ** 文件名:[文件名]* 作者:〈版权〉* 描述:〈描述〉* 修改人:〈修改人〉* 修改时间:YYYY-MM-DD * 修改内容:〈修改内容〉 */说明:每次修改后在文件头部写明修改信息。示例:/ *转载 2021-12-26 10:53:07 · 3373 阅读 · 0 评论 -
go语言在VScode下的环境配置
VS Code配置Go语言开发环境 | 李文周的博客原创 2022-02-20 21:55:15 · 466 阅读 · 0 评论 -
go语言基础1——关键字、变量、常量、字符串、类型转换
Go语言特性为并发而生Go语言的并发是基于goroutine的,goroutine类似于线程,但并非线程。可以将goroutine理解为一种虚拟线程。Go 语言运行时会参与调度goroutine,并将goroutine合理地分配到每个 CPU 中,最大限度地使用CPU性能。开启一个goroutine的消耗非常小(大约2KB的内存),你可以轻松创建数百万个goroutine。goroutine的特点:goroutine具有可增长的分段堆栈。这意味着它们只在需要时才会使用更多内存...原创 2022-02-21 10:34:20 · 419 阅读 · 0 评论 -
go语言基础1.1——字符串类型转换包strconv
Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换。strconv包strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数:Atoi()、Itoa()、parse系列、format系列、append系列。更多函数请查看官方文档。string与int类型转换这一组函数是我们平时编程中用的最多的。Atoi()Atoi()函数用于将字符串类型的整数转换为int类型,函数签名如下。func Atoi(s string) (i int, err.转载 2022-02-27 12:13:17 · 530 阅读 · 0 评论 -
go语言基础2——流程控制if、for、switch、goto、break、continue
if else(分支结构)if条件判断基本写法Go语言中if条件判断的格式如下:if 表达式1 { 分支1} else if 表达式2 { 分支2} else{ 分支3}当表达式1的结果为true时,执行分支1,否则判断表达式2,如果满足则执行分支2,都不满足时,则执行分支3。 if判断中的else if和else都是可选的,可以根据实际需要进行选择。Go语言规定与if匹配的左括号{必须与if和表达式放在同一行,{放在其他位置会触发编译错误。 同理,与e转载 2022-02-21 17:06:08 · 1103 阅读 · 0 评论 -
go语言基础3——输入输出printf、println、scan
看完点个赞呗转载 2022-02-22 10:24:08 · 1147 阅读 · 0 评论 -
go语言基础4——数组
Array(数组)数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法:// 定义一个长度为3元素类型为int的数组avar a [3]int数组定义:var 数组变量名 [元素数量]T比如:var a [5]int, 数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变。[5]int和[10]int是不同的类型。var a [3]intvar b [4]inta = b //.转载 2022-02-23 16:10:09 · 532 阅读 · 0 评论 -
go语言基础4——切片
引子因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性。 例如:func arraySum(x [3]int) int{ sum := 0 for _, v := range x{ sum = sum + v } return sum}这个求和函数只能接受[3]int类型,其他的都不支持。 再比如,a := [3]int{1, 2, 3}数组a中已经有三个元素了,我们不能再继续往数组a中添加新元素了。切转载 2022-02-23 16:38:42 · 1437 阅读 · 0 评论 -
go语言基础4——链表
我们今天主要讨论了。转载 2022-10-27 10:54:19 · 987 阅读 · 0 评论 -
go语言基础5——日志log
无论是软件开发的调试阶段还是软件上线之后的运行阶段,日志一直都是非常重要的一个环节,我们也应该养成在程序中记录日志的好习惯。logGo语言内置的log包实现了简单的日志服务。本文介绍了标准库log的基本使用。使用Loggerlog包定义了Logger类型,该类型提供了一些格式化输出的方法。本包也提供了一个预定义的“标准”logger,可以通过调用函数Print系列(Print|Printf|Println)、Fatal系列(Fatal|Fatalf|Fatalln)、和Panic系列(Pan转载 2022-02-24 10:45:35 · 1267 阅读 · 0 评论 -
go语言基础6——map
Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。mapmap是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。map定义Go语言中map的定义语法如下:map[KeyType]ValueType其中,KeyType:表示键的类型。 ValueType:表示键对应的值的类型。map类型的变量默认初始值为nil,需要使用make()函数来分配内存。语法为:make(map[KeyType]Value.转载 2022-02-24 11:12:34 · 253 阅读 · 0 评论 -
go语言基础6——map进阶
我们这次主要讨论了与字典类型有关的,一些容易让人困惑的问题。比如,为什么字典的键类型会受到约束?又比如,我们通常应该选取什么样的类型作为字典的键类型。我以 Go 语言规范为起始,并以 Go 语言源码为依据回答了这些问题。认真看了这篇文章之后,你应该对字典中的映射过程有了一定的理解。另外,对于 Go 语言在那些合法的键类型上所做的求哈希和判等的操作,你也应该有所了解了。再次强调,永远要注意那些可能引发 panic 的操作,比如像一个值为。转载 2022-10-27 11:51:46 · 167 阅读 · 0 评论 -
go语言基础7——函数★★★
函数是组织好的、可重复使用的、用于执行指定任务的代码块。本文介绍了Go语言中函数的相关内容。函数Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。函数定义Go语言中定义函数使用func关键字,具体格式如下:func 函数名(参数)(返回值){ 函数体}其中:函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见后文)。 参数:参数由参数变量和参数变量的类型组成,多个参数之间使用,分隔转载 2022-02-24 11:31:13 · 172 阅读 · 0 评论 -
go语言基础8——指针进阶
我们今天集中说了说与指针有关的问题。基于基本类型的指针值应该是我们最常用到的,也是我们最需要关注的,比如*Dog类型的值。怎样得到一个这样的指针值呢?这需要用到取址操作和操作符&。不过这里还有个前提,那就是取址操作的操作对象必须是可寻址的。关于这方面你需要记住三个关键词:不可变的、临时结果和不安全的。只要一个值符合了这三个关键词中的任何一个,它就是不可寻址的。但有一个例外,对切片字面量的索引结果值是可寻址的。那么不可寻址的值在使用上有哪些限制呢?转载 2022-11-07 07:54:54 · 234 阅读 · 0 评论 -
go语言基础7.1——闭包和匿名函数★【难点,待学习】
匿名函数函数当然还可以作为返回值,但是在Go语言中函数内部不能再像之前那样定义函数了,只能定义匿名函数。匿名函数就是没有函数名的函数,匿名函数的定义格式如下:func(参数)(返回值){ 函数体}匿名函数因为没有函数名,所以没办法像普通函数那样调用,所以匿名函数需要保存到某个变量或者作为立即执行函数:func main() { // 将匿名函数保存到变量 add := func(x, y int) { fmt.Println(x + y) } add(10, ..转载 2022-02-26 17:19:06 · 193 阅读 · 0 评论 -
go语言基础8——指针
区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。Go语言中的指针任何程序数据载入内存后,在内存都有他们的地址,这就是指针。而为了保存一个数据在内存中的地址,我们就需要指针变量。比如,“永远不要高估自己”这句话是我的座右铭,我想把它写入程序中,程序一启动这句话是要加载到内存(假设内存地址0x123456),我在程序中把这段话赋值给变量A,把内存地址赋值给变量B。这时候变量B就是一个指针变量。原创 2022-02-27 18:45:07 · 189 阅读 · 0 评论 -
go语言基础9——结构体★★★
目录类型别名和自定义类型自定义类型类型别名类型定义和类型别名的区别结构体结构体的定义结构体实例化基本实例化匿名结构体创建指针类型结构体取结构体的地址实例化结构体初始化使用键值对初始化使用值的列表初始化结构体内存布局空结构体面试题构造函数方法和接收者指针类型的接收者值类型的接收者什么时候应该使用指针类型接收者任意类型添加方法结构体的匿名字段嵌套结构体嵌套匿名字段嵌套结构体的字段名冲突结构体的“继转载 2022-02-27 21:29:40 · 388 阅读 · 0 评论 -
go——结构体及其方法的使用法门
也就是说转载 2022-11-01 20:13:31 · 539 阅读 · 0 评论 -
go语言基础9.1——学员信息管理系统【待学】
最新Go语言急速入门视频教程(七米出品)_哔哩哔哩_bilibili跟着视频敲一下代码原创 2022-03-01 11:23:58 · 150 阅读 · 0 评论 -
go语言基础10——包、go module
在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的。本文介绍了Go语言中如何定义包、如何导出包的内容及如何导入其他包。包与依赖管理本章学习目标掌握包的定义和使用 掌握init初始化函数的使用 掌握依赖管理工具go module的使用在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的。本文介绍了Go语言中如何定义包、如何导出包的内容及如何引入其他包。同时也将介绍如何在项目中使用go module管理依赖。包(pa转载 2022-03-01 12:09:51 · 808 阅读 · 0 评论 -
go语言基础11——接口
接口是一种类型,一种抽象的类型。接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。接口本章学习目标了解为什么需要接口以及接口的特点 掌握接口的声明和使用 掌握接口值的概念 掌握空接口的特点及其使用场景在Go语言中接口(interface)是一种类型,一种抽象的类型。相较于之前章节中讲到的那些具体类型(字符串、切片、结构体等)更注重“我是谁”,接口类型更注重“我能做什么”的问题。接口类型就像是一种约定——概括了一种类型应该具备哪些方法,转载 2022-03-02 13:35:38 · 996 阅读 · 0 评论 -
go——接口类型的合理运用
好了,我们来简要总结一下。Go 语言的接口常用于代表某种能力或某类特征。首先,我们要弄清楚的是,接口变量的动态值、动态类型和静态类型都代表了什么。这些都是正确使用接口变量的基础。当我们给接口变量赋值时,接口变量会持有被赋予值的副本,而不是它本身。更重要的是,接口变量的值并不等同于这个可被称为动态值的副本。它会包含两个指针,一个指针指向动态值,一个指针指向类型信息。基于此,即使我们把一个值为。转载 2022-11-05 21:05:49 · 185 阅读 · 0 评论 -
go语言基础12——反射【后续拔高再看】
最新Go语言急速入门视频教程(七米出品)_哔哩哔哩_bilibili本文介绍了Go语言反射的意义和基本使用。变量的内在机制Go语言中的变量是分为两部分的:类型信息:预先定义好的元信息。 值信息:程序运行过程中可动态变化的。反射介绍反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执转载 2022-03-02 14:42:42 · 156 阅读 · 0 评论 -
go语言基础13——并发★★★
并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因。Go语言中的并发编程并发与并行并发:同一时刻只执行一个任务,一个时间段内不断切换执行多个任务。并行:同一时刻同时执行多个任务。Go语言的并发通过goroutine实现。goroutine类似于线程,属于用户态的线程,我们可以根据需要创建成千上万个goroutine并发工作。goroutine是由Go语言的运行时(runtime)调度完成,而线程是由操作系统调度完成。Go语言还提供c转载 2022-03-04 11:02:11 · 713 阅读 · 0 评论 -
go语言基础14——网络编程★★★
现在我们几乎每天都在使用互联网,我们前面已经学习了如何编写Go语言程序,但是如何才能让我们的程序通过网络互相通信呢?本章我们就一起来学习下Go语言中的网络编程。 关于网络编程其实是一个很庞大的领域,本文只是简单的演示了如何使用net包进行TCP和UDP通信。如需了解更详细的网络编程请自行检索和阅读专业资料。互联网协议介绍互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite),正是这一些协议规定了电脑如何连接和组网。我们理解了这些协议,就理解了互联网的原理。由转载 2022-03-04 11:03:29 · 338 阅读 · 0 评论 -
反射reflect
在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。每种语言的反射模型都不同,并且有些语言根本不支持反射。Golang语言实现了反射,反射机制就是在运行时动态的调用对象的方法和属性,官方自带的reflect包就是反射相关的,只要包含这个包就可以使用。.........转载 2022-07-28 17:57:24 · 154 阅读 · 0 评论 -
go语言基础15——单元测试
不写测试的开发不是好程序员。我个人非常崇尚TDD(Test Driven Development)的,然而可惜的是国内的程序员都不太关注测试这一部分。 这篇文章主要介绍下在Go语言中如何做单元测试和基准测试。go test工具Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是go test测试的一部分,不会原创 2022-03-09 20:58:55 · 289 阅读 · 0 评论 -
Go语言操作MySQL
Go语言中的包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用包时必须注入(至少)一个数据库驱动。我们常用的数据库基本上都有完整的第三方实现。例如:MySQL驱动使用MySQL驱动Open打开一个dirverName指定的数据库,dataSourceName指定数据源,一般至少包括数据库文件名和其它连接必要的信息。思考题: 为什么上面代码中的语句不应该写在的前面呢?Open函数可能只是验证其参数格式是否正确,实际上并不创建与数据库的连接。如果要检查数据源的名称转载 2022-06-07 12:47:51 · 301 阅读 · 0 评论 -
可直接套用的Go编码规范
GitHub - marmotedu/geekbang-go: 极客时间 《Go 语言项目开发实战》课程补充教程。在Go项目开发中,一个好的编码规范可以极大的提高代码质量。为了帮你节省时间和精力,这里我整理了一份清晰、可直接套用的 Go 编码规范,供你参考。这份规范,是我参考了Go官方提供的编码规范,以及Go社区沉淀的一些比较合理的规范之后,加入自己的理解总结出的,它比很多公司内部的规范更全面,你掌握了,以后在面试大厂的时候,或者在大厂里写代码的时候,都会让人高看你一眼,觉得你code很专业。这份编码规范中转载 2022-06-23 17:36:10 · 564 阅读 · 0 评论