
golang学习
文章平均质量分 89
这个专栏是有关golang的知识分享。
留乘船
以脚踏实地为基,寻突破自我之路。专注后端和运维!
展开
-
使用gin -gorm-jwt-中间件拦截的一个小项目
这个项目主要使用了gin+gorm+jwt实现的登录注册功能,另外还通过定义中间件的方式,实现了对请求进行权限校验后放行的功能。非常适合练手。如果有新的想法也欢迎来我评论区分享一下。目录:config/app.yml2.helper目录helper/helper.go3.middlewares目录middlewares/auth_admin.go4.models目录models/init.gomodels/UserBasic.go5.routerrouter/app.go6.Serv原创 2024-11-19 23:31:32 · 597 阅读 · 0 评论 -
golang创建式设计模式---工厂模式
工厂模式(Factory Method Pattern)是一种设计模式,旨在创建对象时,将对象的创建与使用进行分离。通过定义一个工厂类,这个类具有创建不同具体产品对象的方法。用户只需与工厂类交互,告诉工厂自己想要什么类型的产品,工厂就会负责创建并返回相应的产品对象。这样做的好处是使得系统的架构更加清晰、灵活,方便扩展和维护产品的种类,同时也降低了代码之间耦合度。简单来说,就是有个专门负责生产对象的“地方”,根据需求生产出对应的对象。其uml类图由图可知,工厂方法模式的角色组成如下。原创 2024-05-19 17:13:56 · 1375 阅读 · 2 评论 -
golang创建式设计模式------单例模式
单例模式(Singleton Pattern)是一种常用的设计模式。单例模式的类提供了一种访问其唯一对象的方法,该对象可以直接访问,无须实例化。单例模式保证了一个类的对象只存在一个,同时维护一个对其对象的全局访问点。原创 2024-05-14 00:40:38 · 1253 阅读 · 0 评论 -
基于gin框架的文件上传(逐行解析)
记录一下使用gin框架完成一个文件上传的功能,一下是实现该功能的代码,适合小白,代码都有逐行解释!后续使用postman提交一个文件参数进行测试原创 2024-05-12 09:55:04 · 550 阅读 · 0 评论 -
strcov的常用方法
strconv是 Go 语言标准库中的一个包,用于进行基本数据类型和字符串之间的转换。以下是strconvAtoi和ItoaAtoi函数用于将字符串转换为整数类型,Itoa函数则用于将整数类型转换为字符串类型。Parse系列函数:包括ParseIntParseBool和ParseFloat等函数,用于将字符串解析为指定类型的值。Format系列函数:包括FormatIntFormatBool和等函数,用于将基本数据类型转换为字符串类型。Append系列函数:包括AppendIntAppendBool。原创 2024-05-01 21:06:42 · 428 阅读 · 0 评论 -
gin框架学习
一个go语言的web框架Gin框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。import ("fmt""net/http""time"name, ok := c.Get("name") //跨中间件取值if!ok {name = "匿名用户"})// 定义一个中间件,统计处理函数的耗时//计时c.Next() //调用后续的处理函数。原创 2024-02-03 18:56:54 · 1088 阅读 · 0 评论 -
基于go语言开发的海量用户及时通讯系统
这是一个基于go语言的海量用户通讯系统,也是在学习golang的过程中必须做的一个项目。下面我将我完成这个项目的步骤分享给大家!!原创 2023-12-17 11:16:54 · 572 阅读 · 0 评论 -
go学习redis的学习与使用
1).Redis是NoSQL数据库,不是传统的关系型数据库官网: http://redis.io/ 和http://www.redis.cn/2).Redis:REmote DIctionary Server(远程字典服务器),Redis的性能非常高,单机可以达到15W gps.通常适合做缓存,也可以持久化3)是完全开源免费的,高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化Nosql数据库,是最热门的NoSql数据库之一,也称为数据结构服务器。原创 2023-12-16 22:45:12 · 379 阅读 · 0 评论 -
go学习之网络编程
Golang的主要设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端程序必不可少也是至关重要的一部分网络编程有两种1)TCP socket编程,是网络编程的主流。之所以交TCP socket编程,是因为底层是基于Tcp/ip协议的,比如QQ聊天2)b/s结构的http编程。我们使用浏览器去访问服务器时,使用的就是http协议,而http底层依旧是tcp socke实现的,比如京东商城(这属于go web开发范畴)原创 2023-12-14 22:27:16 · 767 阅读 · 1 评论 -
go学习之反射知识
1)反射可以在运行时动态获取变量的各种信息,比如变量的类型(type),类别(kind)2)如果是结构体变量,还可以获取到结构体本身的信息(包括结构体的字段、方法)3)通过反射,可以修改变量的值,可以调用关联的方法4)使用反射,需要import (“reflect”)原创 2023-12-12 22:16:11 · 390 阅读 · 0 评论 -
go学习之goroutine和channel
1)进程就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位2)线程是进程的一个执行实例吗,是程序执行的最小单位,他是比进程更小的能独立运行的基本单位3)一个进程可以创建和销毁多个线程,同一个进程中的多个线程可以并发执行4)一个程序至少有一个进程,一个进程至少有一个线程1)M:操作系统的主线程(是物理线程)2)P:协程执行需要的是上下文3)G:协程1)channel本质就是一个数据结构-队列2)数据是先进先出[FIFIO frist in first out]原创 2023-12-02 13:29:39 · 590 阅读 · 2 评论 -
go学习之json和单元测试知识
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。key-valJSON是2001年开始推广使用的数据格式,目前已成为主流的数据格式JSON易于机器解析和生成,并有效地提升网络传输效率,通常程序在网络传输时会先将数据(结构体、map等)序列化成json字符串时,在反序列化恢复成原来的数据类型(结构体、map等)。这种方式已然成为各个语言的标准。原创 2023-11-30 23:09:45 · 500 阅读 · 0 评论 -
go学习之文件操作与命令行参数
文件对于我们并不陌生,文件是数据源(保存数据的地方)一种,比如大家经常使用的word文件,txt文件,excel文件…都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保存视频声音文件在程序中是以流的形式来操作的流:数据在数据源(文件)和程序(内存)之间经历的路径输入流:数据从数据源(文件)到程序(内存)的路径输出流:数据从程序(内存)到数据源(文件)的路径os.File结构体封装所有文件相关操作。原创 2023-11-29 22:44:03 · 570 阅读 · 2 评论 -
go学习之简单项目
把记账软件的功能封装到一个结构体中,然后调用该结构体的方法来实现记账,显示明细就可以了,结构体的名字为FamilyAccount。y/n",必须输入正确的y/n,否则循环输入指令,直到输入y或者n。编写customerView.go另外可以把customer.go和customerDervice.go协商。需要编写CustomerView和customerService,Customer类。2.当没有任何收支明细时,提示“当前没有收支明细。思路分析:给出的界面完成,主菜单的显示,当用户输入4的时候就退出。原创 2023-11-19 19:11:22 · 522 阅读 · 1 评论 -
go学习之接口知识
interface类型可以定义一组方法,但是这些不需要实现。并且interface不能包含任何变量,到某个自定义类型(比如结构体Phone)要使用的时候,再根据具体情况把这些方法写出来对初学者讲,理解接口不算太难,难的是不知道什么时候使用接口,下面几个例子来解释1)现在美国要制造轰炸机,武装直升机,专家只需要把飞机需要的功能/规格定下来即可,然后让别人具体实现即可2)就是做一个项目,在接口中定义规范让其他人去实现所定的规范变量(实例)具有多种形态。原创 2023-11-12 20:13:11 · 544 阅读 · 0 评论 -
go的面向对象学习
在某些情况下,我们需要声明(定义)方法,比如Person结构体,除了有一些字段外(年龄,姓名…)Person结构体还有一些行为比如:可以说话、跑步。。通过学习,还可以做算术题,这时要使用方法才可以完成Golang中的方法是作用在指定的数据类型上的(即。和指定的数据类型绑定)因此自定义类型都可以有方法,而不仅仅是structtest方法和Person类型绑定test方法只能通过Person类型的变量来调用,而不能直接调用,也不能使用其他类型变量来调用下面的使用方式都是错误的dog.test()原创 2023-10-06 15:29:32 · 495 阅读 · 2 评论 -
go学习之数组与Map
数组的定义var 数组名[数组大小] 数据类型赋初值 a[0]=1 a[1]=30 ...数组内存(重要)//当我们定义完数组后,数组的各个元素有默认值0fmt.Printf("数组的地址是:%p",&intArr)//数组的地址是:0xc0420082c0fmt.Printf("数组首地址是:%p",&intArr[0])////数组的首地址是:0xc0420082c0数组的地址可以通过数组名来获取:&intArr数组的第一个元素的地址就是数组的首地址。原创 2023-09-23 10:57:25 · 548 阅读 · 0 评论 -
go学习之函数知识
完成一个需求:输入两个数,再输入一个运算符(±*/),得到结果使用传统方法:分析代码上的问题:为完成某一个功能的程序指令(语句)的集合,称为函数在Go中,函数分为:自定义函数、系统函数(查看GO编程手册)函数基本语法:1)形参列表:表示函数的输入2)函数中的语句:表示为了实现某一个功能的代码块3)函数可以有返回值,也可以没有案例入门:2.包为什么要用包1)在实际的开发中,我们往往需要在不同的文件中,去调用其他文件的定义的函数,比如main.go中,去使用utils.go文件中的函数,如何实现?2)现原创 2023-09-19 20:13:13 · 844 阅读 · 0 评论 -
go学习之流程控制语句
在程序中,程序运行的流程控制决定程序如何执行的,是我们应该掌握的,主要有三大流程控制语句。原创 2023-08-27 22:22:03 · 980 阅读 · 0 评论 -
go学习-指针 标识符
1)基本数据类型,变量存的值,也叫值类型2)获取变量的地址用&,比如 var num int ,获取num的地址:&num3)指针类型,变量存的是一个地址,这个地址指向的空间存的才是真正值,比如: var ptr *int =&num4)获取指针类型所指的值,使用*,比如:var *ptr int,使用 *ptr获取p指向的值5)举例说明import("fmt"//演示golang中的指针类型//基本数据在内存的布局// i的地址是多少 &i。原创 2023-08-26 17:21:10 · 462 阅读 · 0 评论 -
go语言学习之有关变量的知识
在程序开发中,我们经常将基本数据类型转换成string或者将string转换为基本数据类型基本类型转为string类型方式1:fmt,Sprintf(“%参数”,表达式)//是用第一种方式来转换 fmt.Sprint()str = fmt.Sprintf("%d",num1) //num1转化为stringfmt.Printf("str type %T str=%v\n",str,str) //结果为string 和99Sprint根据format参数生成格式化的字符串并返回该字符串。原创 2023-08-25 21:20:27 · 907 阅读 · 0 评论 -
go学习之go的语法知识
go支持C语言风格的/* */块注释,也支持C++风格的//注释,行注释更通用,块注释主要针对包的详情说明或者屏蔽大块的代码。4)go方法、一由条条语句构成,每个语句后不需要分号(go语言会在每行后自动加上分号),这也体现出go语言的简洁性。5)go编译是一行一行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一行,否则会报错。Path:指令 sdk:bin目录 go.exe godoc.exe gofmt.exe。SDK就是啊软件开发工具包,我们做go开发,首先需要安装并配置好‘go。原创 2023-08-24 22:25:36 · 632 阅读 · 0 评论 -
go学习一之go的初体验
通过运行进行对比前者执行速度更快,后者执行速度更慢,因为前面是直接运行二进制语言,后面还要先进行编译成二进制的语言再执行,实际的开发中还是先进行编译成二进制文件。注意:通过go run 命令可以直接运行hello,go程序(类似于执行一个脚本的文件的形式)在真实的生产环境会先编译再去运行go程序。2)如果我们是直接go run go源代码,那么要在另一台机器上运行,也需要go开发环境,否则无法运行。表示该hello.go文件所在的包是main,在go中每一个文件都要归属于一个包。原创 2023-08-23 23:42:19 · 487 阅读 · 0 评论