Golang
Go语言相关的教程
Python私教
收徒弟,接私活,有直播课和私教课,可以做家教和川渝线下教学,包教会 18010070052。
展开
-
Go语言的创始人, 核心特性和学习资源
Go语言(又称为Golang)是一种静态类型、编译型的开源编程语言,由Google开发。:Go语言的接口是一种类型系统,它定义了一组方法,任何实现了这些方法的类型都实现了该接口。:Go语言使用显式的错误返回值来处理错误,而不是像Java那样的异常机制。:Go语言提供了gofmt工具,可以自动格式化代码,保持代码风格的一致性。:Go语言没有传统意义上的类和继承,而是通过接口和组合来实现代码的复用。:Go语言是编译型语言,源代码直接编译成机器码,运行速度快。:Go语言的语法简洁,易于学习和使用。原创 2024-11-17 08:28:44 · 332 阅读 · 0 评论 -
2024年11月16日 星期六 重新整理Go技术
大家好, 我是张大鹏, 今天是2024年11月16日星期六, 很高兴在这里给大家分享技术.今天又是休息的一天, 做了很多的思考, 整理了自己掌握的技术, 比如Java, Python, Golang, Rust等等.由于有个学生需要我录制K8S相关的技术视频, 所以我决定重新整理一下Go相关的技术, 因为云原生的开发语言是Go语言, 要做K8S的开发, Go需要是必须要学习的语言.我决定整理Go语言相关的基础技术并录制相关的视频教程, 然后从零到一的实现K8S的云原生学习视频.原创 2024-11-17 08:17:17 · 573 阅读 · 0 评论 -
Go语言现代web开发15 Mutex 互斥锁
如果我们使用Lock()方法锁定代码的某个部分,我们必须使用Unlock()方法解锁它。将Unlock()方法与defer结合使用是一个很好的做法,这样我们就可以确保代码无论如何都将被解锁。没有相互排斥,下一种情况是可能的。第一个线程读取变量(5)的值,与此同时,第二个线程读取变量(5)的值并更新该值,因此现在变量的值等于10。第一个例程现在将复制该值,但它保留旧的变量值(5),因此最终结果将不是20,而是10,这是不正确的。变量的初始值是5,所以最终结果应该是20(5 * 2 * 2)。原创 2024-09-18 08:07:54 · 1120 阅读 · 0 评论 -
Go语言现代web开发14 协程和管道
并发是一种范例,其中程序的不同部分可以并行执行而不会影响最终结果。Go编程支持与并发执行和并发执行之间的通信相关的几个并发概念。原创 2024-09-18 07:37:36 · 1309 阅读 · 0 评论 -
Go语言现代web开发15 泛型和错误
通常,这些函数将具有相同的代码库,遍历数组,并检查当前元素是否为我们要查找的元素。在下一个示例中,我们将为节点定义一个类型,该类型可用于二叉树的实现。我们可以通过引入类型参数(在函数名和函数实参之间的方括号中)来创建泛型函数,并在函数签名中使用它。Panic是一个停止常规流的内置函数,类似于其他编程语言(Java)中的运行时异常概念。设计师们长期以来一直反对增加对通用的支持,理由是它会破坏设计的简单性,而且可以用空接口来代替它。恐慌通常是由意想不到的错误引发的。在下面的示例中,索引越界的异常将会被触发。原创 2024-09-13 10:39:44 · 1089 阅读 · 0 评论 -
Go语言现代web开发13 方法和接口
正如我们所看到的,将返回两个值,底层值和布尔值(前面示例中的变量v和ok)。如果变量为Square类型(前面的例子就是这种情况),v将保存接口变量的实际值(边长等于5的Square), ok将为真。该函数接受任意数量的类型interface{},因此我们可以传递不同的类型(字符串、数字、布尔值等),并且该类型的值将在标准输出中打印。在前面的例子中,类型是Square,值是新创建的Square,边长是5。从技术上讲,前面的方法不是在基本类型上声明的,但是重新声明的类型具有派生它的基类型的所有特征。原创 2024-09-13 10:39:01 · 1335 阅读 · 0 评论 -
Go语言现代web开发11 函数
函数是执行特定任务的程序的命名部分。我们通常编写函数是为了避免代码重复(通过将项目或包中重复的代码块移动到函数中)或使代码更具可读性(通过将执行特定任务的大量代码块移动到函数中)。在Go编程语言中,函数是用关键字func定义的。参数是为获得结果而提供给函数的值。函数可以有零个或多个参数。下面是三个函数的例子,第一个没有参数的函数将返回数学常数pi的值,第二个有一个参数的函数将增加整数变量的值,第三个函数将返回作为参数传递的两个整数的和。返回值类型位于声明的末尾,在参数之后,在花括号之间的函数体之前。原创 2024-09-13 10:38:20 · 1023 阅读 · 0 评论 -
Go语言现代web开发defer 延迟执行
如果在return之后声明了defer,函数调用将不会被执行,因为defer语句不会被执行,函数调用也不会被压入堆栈。在下面的示例中,testDefer()函数的第一次调用将执行对Print()函数的四次调用,而第二次调用将不执行第四次调用。第一次打印将被执行,第二次打印(在defer下)将被压入堆栈,第三次打印将被执行,第四次打印将被压入堆栈。函数调用将被压入堆栈。defer语句将延迟函数的执行,直到周围的函数完成。在下面的例子中,fmt.Print(2)的执行将被延迟,直到main()函数结束;原创 2024-09-12 07:47:33 · 766 阅读 · 1 评论 -
Go语言现代web开发09 for 循环语句
在下一个示例中,当变量i的值等于3时,循环将终止。对于每次迭代,将返回两个值,一个索引和一个值(索引处元素的副本)。在下面的示例中,除了索引3上的一个元素外,所有切片元素都将在标准输出中打印。通常,我们需要多次执行特定的代码块。该条件将在每次迭代之前求值,如果求值的结果为正(true),则执行下一次迭代。在下面的示例中,第二个切片的所有元素都指向保存最后一个赋值的变量(在本例中为三个)。在我们的示例中,操作符++将增加变量的值。第一个语句,init语句,将声明并初始化在循环范围内可见的变量(整数变量i)。原创 2024-09-12 07:45:08 · 1508 阅读 · 0 评论 -
Go语言现代web开发08 if和switch分支语句
在某些编程语言中,除非将break关键字放在case语句的末尾,否则将执行以下所有case语句。Go编程语言更加灵活。下面是一个if-else语句的示例,它将根据国家代码返回国家名称。如果条件执行的结果为负(false), else语句中的代码将被执行。在下一个示例中,如果变量a的值小于100,则a的值将增加,否则a的值将乘以5。该语句将在条件之前执行,并且声明的变量仅在if语句的作用域中可见。如果条件计算的结果为正(true),则执行If语句中的代码。在下一个示例中,如果值a小于100,则值a将递增。原创 2024-09-11 07:07:38 · 883 阅读 · 0 评论 -
Go语言现代web开发07 map字典
例如,如果我们有一个表示篮球队(五名球员)的地图,我们可以使用球衣号码作为键,并使用球员姓名作为值。如果我们需要有序键,也许map不是解决问题的好方法,我们应该使用slice。键类型在方括号之间定义,值类型在末尾定义。每个键只能在映射上出现一次,并且可以用来查找与该键配对的值。如果键在map中,则值true将分配给变量ok,元素值将分配给country,否则,值false将分配给变量ok,值nil将分配给country。如果没有make()函数,var语句将定义一个nil映射,这将或多或少毫无用处。原创 2024-09-11 07:04:52 · 822 阅读 · 0 评论 -
Go语言现代web开发06 数组和切片
当我们使用make()函数时,将创建一个新的数组,用指定类型的默认值初始化,并返回一个指向数组的切片。在下一个示例中,将创建一个新片,其中将包含索引为基础数组1到5的元素。Length表示片包含的元素数量,而capacity表示底层数组中的元素数量(从片的第一个元素开始计数)。数组是复杂的数据类型,可以定义为具有相同类型的元素的集合。数组的元素可以初始化。在没有初始化的情况下,将给元素分配默认值(在本例中,数组的所有六个元素都将初始化为值0)。这个表达式将创建一个长度为5的数组和一个引用该数组的切片。原创 2024-09-10 06:34:53 · 1419 阅读 · 0 评论 -
Go语言现代web开发05 指针和结构体
这些操作不会改变指针指向的值,但会改变指针地址的值。结构是一种复杂的数据类型,可以定义为字段的集合。下面是一个结构体person的例子,它有两个字段:name和age。在我们创建person的示例中,我们为所有字段提供了值。此外,我们可以仅为某些字段提供值(在这种情况下,我们不能省略字段名)或省略所有字段的值。指针是存储值的内存地址的复杂数据类型。简单地说,如果在内存地址中存储了一个值100和一个指向该值的指针,那么指针的值就是100。指针的默认值是nil。可以声明指向结构体的指针,并使用该指针访问字段。原创 2024-09-10 06:17:59 · 1076 阅读 · 0 评论 -
Go语言现代web开发04 变量常量以及类型转换
变量可以定义为存储数据值的容器。初始值设置完成后,可以修改变量值。var语句可用于声明一个变量或变量列表,并在其末尾加上类型。var语句可以包含初始化式;初始化式的数量必须与变量名的数量相同。如果初始化项不存在,则将默认值赋给该变量。正如我们所看到的,默认值0和false将被分配给未初始化的变量a和b,而特定值1和true将被分配给初始化的变量c和d。如果存在初始化项,可以省略type,变量将从初始化项继承type。原创 2024-09-09 06:38:03 · 1534 阅读 · 1 评论 -
Go语言现代Web开发03 关键字和包以及基本数据类型
根据用于存储无符号整数值的位数,Go编程语言支持以下类型:uint8(8位)、uint16(16位)、uint32(32位)、uint64(64位)、uintptr(32位,64位)和uint(32位,64位)。整数可以是正的、负的或零。根据存储整数值的位数,Go编程语言支持以下类型:int8(8位)、int16(16位)、int32(32位)、int64(64位)和int(32位系统为32位,64位系统为64位)。数字类型的默认值为0,字符串类型的默认值为""(空字符串),布尔类型的默认值为false。原创 2024-09-09 06:34:00 · 1406 阅读 · 0 评论 -
Go Playground 在线编程环境
对于本章和下一章的所有示例,我们将使用Go Playground。Go Playground代表了一个可以运行用Go语言编写的程序的web服务。一旦我们学习了Go编程语言的所有重要概念,并准备开始开发我们的web应用程序,我们将学习如何在本地机器上安装和设置Go环境。在此之前,Go Playground是一个足够好的工具,可以让你熟悉Go编程语言。在后面的示例中,可以省略包和main()函数的声明。默认情况下,Go Playground使用最新的稳定版本,但如果有必要,我们可以将其降低到较早的版本之一。原创 2024-09-08 14:31:53 · 794 阅读 · 0 评论 -
Go 语言的优势
本章将介绍Go编程语言的基本概念,这将有助于我们在后面的章节中开发web服务器应用程序。我们将讨论和学习变量、常量、数据类型(简单的和复杂的),并给出一些最佳实践。在本章的开头,我们将给出一个简短的介绍和Go编程语言的历史,以及与其他编程语言相比的一些优势。原创 2024-09-08 14:00:26 · 1072 阅读 · 0 评论 -
Go语言开发用户登录功能基础设计
定义用户处理器package zdpgo_gin_login// UserHandler 用户处理器,定义用户相关的路由type UserHandler struct{}定义常用的方法// Login 登录方法func (h *UserHandler) Login(c *gin.Context) {}// Logout 注销方法func (h *UserHandler) Logout(c *gin.Context) {}// Register 注册方法func (h *U原创 2024-09-05 09:37:25 · 612 阅读 · 0 评论 -
Go语言基础语法 20240904更新
/ 定义一个简单的方法// 调用方法hello()使用 func 可以用来定义方法。这里定义的是一个没有参数没有返回值的方法。也是最简单的一种方法形态。在学习阶段,我们可以将知识点封装在一个又一个的方法中,便于快速学习和组织代码。后面我们还会学习关于方法的更多高级的知识。原创 2024-09-04 09:12:58 · 654 阅读 · 0 评论 -
Go语言并发编程,进入并发编程,并发编程原理和相关术语介绍
这是简·萨顿。简在HSS国际会计公司做软件开发已经三个月了。在她最近的项目中,她一直在关注工资系统中的一个问题。工资单软件模块在每月月底结束营业后运行,计算HSS客户员工的所有工资支付。简的经理已经安排了一次会议,与会者包括产品负责人、基础设施团队和一名销售代表,目的是弄清问题的根源。出乎意料的是,首席技术官Sarika Kumar通过视频电话加入了会议室。产品负责人托马斯·博克(Thomas Bock)开始说:“我不明白。从我记事起,工资模块就一直工作得很好。原创 2024-08-18 21:43:53 · 918 阅读 · 1 评论 -
zdpgo_gin_login 框架20240815更新,增加注册路由的功能,一个方法自动拥有注册和登录两个API接口
适配gin框架的登录注册功能组件,通过本框架轻松拥有登录注册相关的API接口。原创 2024-08-15 15:26:28 · 407 阅读 · 0 评论 -
zdpgo_gorm 框架快速入门教程 20240815 如何查询数据
【代码】zdpgo_gorm 框架快速入门教程 20240815 如何查询数据。原创 2024-08-15 14:58:46 · 142 阅读 · 0 评论 -
zdpgo_gorm 框架快速入门教程 20240815 常用的新增数据的方式,附完整代码
这个方法比较适合非常大批量的新增数据,第二个参数size是一个整数,用来控制每次被写入数据库的数据数量。原创 2024-08-15 10:05:35 · 131 阅读 · 0 评论 -
zdpgo_gorm 框架快速入门教程 20240814 批量添加数据
这个方法比较适合非常大批量的新增数据,第二个参数size是一个整数,用来控制每次被写入数据库的数据数量。原创 2024-08-14 17:19:02 · 305 阅读 · 0 评论 -
zdpgo_gorm 框架快速入门教程 20240814上课笔记和完整代码 实现MySQL数据库基本增删改查
【代码】zdpgo_gorm 框架快速入门教程 20240814上课笔记和完整代码 实现MySQL数据库基本增删改查。原创 2024-08-14 11:17:57 · 106 阅读 · 0 评论 -
Go 语言并发编程快速入门 20240814教学笔记及实战代码
【代码】Go 语言并发编程快速入门 20240814教学笔记及实战代码。原创 2024-08-14 09:33:37 · 494 阅读 · 0 评论 -
zdpgo_gin_sessions 专为zdpgo_gin打造的session框架,当需要使用session存储数据的时候可以考虑使用此框架
专为zdpgo_gin打造的session框架,当需要使用session存储数据的时候可以考虑使用此框架。原创 2024-08-13 12:29:43 · 384 阅读 · 0 评论 -
zdpgo_gin_jwt 专为zdpgo_gin打造的JWT权限校验中间件,当需要实现基于JWT Token的权限校验的时候可以考虑使用此框架
专为zdpgo_gin打造的JWT权限校验中间件,当需要实现基于JWT Token的权限校验的时候可以考虑使用此框架。原创 2024-08-13 08:52:46 · 1286 阅读 · 0 评论 -
zdpgo_cobra_req 新增解析请求体内容
使用Go语言开发的,类似于curl的HTTP客户端请求工具,用于便捷的测试各种HTTP地址。原创 2024-08-13 08:22:34 · 470 阅读 · 0 评论 -
Go语言+Vue3开发前后端后台管理系统实战 用户管理的前端界面和表结构分析
不过很明显,我们并不能直接一上来就做用户管理相关的功能,因为在新增用户的时候有一个表单,这个表单里面关于角色是通过下拉框选择的,必须要先有角色,才能有用户。所以我们需要先把角色管理的功能做好。如果您要本套管理系统的完整代码或者视频课程,可以留言哦。下个文章我们分析角色管理是如何实现的。原创 2024-08-12 19:26:01 · 812 阅读 · 0 评论 -
zdpgo_gin_graceful 为zdpgo_gin框架打造的用于实现优雅退出的框架,当你需要程序优雅退出的时候可以考虑使用此框架
为zdpgo_gin框架打造的用于实现优雅退出的框架,当你需要程序优雅退出的时候可以考虑使用此框架。原创 2024-08-12 15:10:31 · 963 阅读 · 0 评论 -
zdpgo_gin_limit 为zdpgo_gin打造的接口限流框架,当API接口需要限制访问频率的时候可以使用此框架
为zdpgo_gin打造的接口限流框架,当API接口需要限制访问频率的时候可以使用此框架。原创 2024-08-10 14:17:48 · 581 阅读 · 0 评论 -
zdpgo_gin_timeout 专为zdpgo_gin框架打造的接口超时控制中间件框架,用于实现接口的超时处理
nil {原创 2024-08-10 13:41:27 · 428 阅读 · 0 评论 -
zdpgo_gin_requestid 用于zdpgo_gin框架生成Request ID的框架
nil {原创 2024-08-10 13:30:24 · 366 阅读 · 0 评论 -
zdpgo_gin_cache 用于zdpgo_gin的缓存中间件,用于实现接口数据的缓存
用于zdpgo_gin的缓存中间件,用于实现接口数据的缓存。原创 2024-08-10 10:19:41 · 385 阅读 · 0 评论 -
zdpgo_redis_v2 Go语言连接Redis的另一个版本,支持上下文操作,封装了一些便捷的处理操作
Go语言连接Redis的另一个版本,支持上下文操作,封装了一些便捷的处理操作。原创 2024-08-10 09:53:01 · 532 阅读 · 0 评论 -
zdpgo_gin_zap 整合zdpgo_gin框架和zdpgo_zap框架的日志中间件,用于实现路由日志记录
import ("bytes""fmt""io""time"// 使用详细的配置UTC: true,// 记录请求IDrequestID!= "" {// 记录链路追踪ID//}// 记录请求体信息}),}))})})err!原创 2024-08-10 08:09:28 · 449 阅读 · 0 评论 -
zdpgo_gin_pprof 为 zdpgo_gin 框架提供的pprof性能分析工具
为zdpgo_gin框架提供的pprof性能分析工具使用教程默认配置自定义配置浏览器访问如下页面查看文字版pprof信息http://localhost:8080/debug/pprof/图形化查看:需要安装:https://graphviz.org/download/使用pprof工具查看堆配置文件:或者看看30秒的CPU配置文件:或者在调用runtime之后查看运行例程阻塞配置文件或者收集5秒的执行跟踪:原创 2024-08-09 14:29:44 · 507 阅读 · 0 评论 -
Go语言项目实战班04 Go语言课程管理系统项目实战 20240807 课程笔记和上课代码
预览课程特色本教程录制于2024年8月8日,使用Go1.22版本,基于Goland2024进行开发,采用的技术栈比较新。每节课控制在十分钟以内,课时精简,每节课都是一个独立的知识点,如果有遗忘,完全可以当做字典来查询,绝不浪费大家的时间。整个课程从两行代码实现注册登录API接口讲起,以一个课程系统为实战,结合Vue3开发的前端,实现一个基本的前后端分离的课程管理系统,层层递进,学习路径平缓。Golang是当前国内越来越多的企业正在全面转的一门系统级别的高性能的编程语言,比C语言写法更加的简单,比原创 2024-08-08 12:17:22 · 793 阅读 · 0 评论 -
Go语言中gin+gorm开发前端端分离博客时遇到的问题,gorm执行查询时如何选中特定字段?
在查询用户信息的时候,由于密码这个字段比较敏感,需要进行处理,不要返回给前端。我一开始的解决方案是直接查询数据以后做一次转换,但是这种方案效率比较低,所以我就在思考有没有更快的方案?比如说,能不能直接选择特定字段进行查询。结果是令人满意的,gorm提供了Select这个方法,可以让我们选择特点的字段。本篇文章主要讲解了gorm如果实现指定字段查询,然后还提供了go语言json解析时如果字段是空值如何不让其回显给前端的方案。人生苦短,我用pygo,我是您身边的Python私教。原创 2024-08-07 08:56:53 · 691 阅读 · 0 评论