Golang
文章平均质量分 69
Golang基础学习
飞哥前程似锦
这个作者很懒,什么都没留下…
展开
-
G0第28章:Go语言微服务框架
加不加缓存对于逻辑层是无感知的,但是需要添加上配置以连接缓存。原创 2023-09-10 19:56:14 · 179 阅读 · 0 评论 -
G0第27章:服务注册与服务发现
1、客户端服务发现2、服务端服务发现原创 2023-08-22 11:15:10 · 107 阅读 · 0 评论 -
G0第26章:微服务概述与gRPCprotocol buffers
首先让我们看一个非常简单的例子。假设你想要定义一个搜索请求消息格式,其中每个搜索请求都包含一个查询词字符串、你感兴趣的查询结果所在的特定页码数和每一页应展示的结果数。下面是用于定义这个消息类型的 .proto 文件。文件的第一行指定使用 proto3 语法: 如果不这样写,protocol buffer编译器将假定你使用 proto2。这个声明必须是文件的第一个非空非注释行。SearchRequest 消息定义指定了三个字段(名称/值对) ,每个字段表示希望包含在此类消息中的每一段数据。原创 2023-08-19 23:47:04 · 1331 阅读 · 1 评论 -
G0第25章:Go Web进阶项目实战
1、gin框架路由使用前缀树,路由注册的过程是构造前缀树的过程,路由匹配的过程就是查找前缀树的过程2、gin框架的中间件函数和处理函数是以切片形式的调用链条存在的,我们可以顺序调用也可以借助c.Next()方法实现嵌套调用3、借助c.Set()和c.Get()方法我们能够在不同的中间件函数中传递数据。原创 2023-06-06 10:04:40 · 3916 阅读 · 0 评论 -
G0第24章:GORM CRUD指南 、 Hook介绍
上面代码实际执行的SQL语句是INSERT INTO users(“age”) values(‘99’);,排除了零值字段Name,而在数据库中这一条数据会使用设置的默认值小王子作为Name字段的值。... } // 使用Scan将多条结果扫描进事先准备好的结构体切片中 type Result struct {package main import("fmt" "gorm.io/driver/mysql" "gorm.io/gorm") // 1、定义模型 type User struct {原创 2023-05-29 11:03:04 · 696 阅读 · 0 评论 -
G0第23章:GORM基本示例、GORM Model定义、主键、表名、列名的约定
在使用GORM工具时,通常我们需要再代码中定义模型(model)与数据库中的数据表进行映射,在GORM中模型(Models)通常是正常定义的结构体、基本的go类型或他们的指针。同时也支持 sql.Scanner 及 driver.Valuer 接口。unique_index"` Role string `gorm:"size:255"` // 设置字段大小为255 MemberNumber * string `gorm:"unique;原创 2023-05-28 14:25:04 · 2035 阅读 · 0 评论 -
G0第23章 :gorm介绍、模型定义、连接数据库
模型是标准的 struct,由 Go 的基本数据类型、实现了 Scanner 和 Valuer 接口的自定义类型及其指针或别名组成charset=utf8&parseTime=True&loc=Local" , // data source name, 详情参考:https://github.com/go-sql-driver/mysql#dsn-data-source-name }) , & gorm . Config {})原创 2023-05-26 22:35:09 · 1295 阅读 · 0 评论 -
G0第22章 :获取参数、文件上传、重定向、Gin路由、Gin中间件、运行多个服务
Gin框架中的路由使用的是httprouter这个库其基本原理就是构造一个路由地址的前缀树Gin中的中间件必须是一个 gin.HandlerFunc 类型。原创 2023-05-26 21:13:22 · 794 阅读 · 0 评论 -
G0第21章 :gin框架介绍、RESTful API、Gin渲染
Go世界里最流行的Web框架,Github。上有32K+star。基于httprouter开发的Web框架。中文文档齐全,简单易用的轻量级框架。r := gin . Default() //返回默认的路由引擎 //指定用户使用GET请求访问/hello时,执行sayHello这个函数 r . GET("/hello" , func(c * gin . Context) {" , }) }) //启动服务 r . Run(":9090") }以下内容为网页中需要显示的界面原创 2023-05-26 15:27:55 · 1607 阅读 · 0 评论 -
Go第 19 章 :Redis 的使用
string 是 redis 最基本的类型,一个 key 对应一个 value。string 类型是二进制安全的。除普通的字符串外,也可以存放图片等数据redis 中字符串 value 最大是 512M举例说明 Redis 的 Hash 的 CRUD的基本操作.演示添加 user 信息的案例 (name,age )列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列 表的头部(左边)或者尾部(右边)。List 本质是个链表, List 的元素 是有序的,元素的值可以重复.原创 2023-02-05 17:46:34 · 630 阅读 · 0 评论 -
Go第 18 章 :tcp编程 (勤复习)
Golang 的主要设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。网络编程有两种:1) TCP socket 编程,是网络编程的主流。之所以叫 Tcp socket 编程,是因为底层是基于 Tcp/ip 协 议的. 比如: QQ 聊天 [示意图]2) b/s 结构的 http 编程,我们使用浏览器去访问服务器时,使用的就是 http 协议,而 http 底层依 旧是用 tcp socket 实现的。原创 2023-02-04 21:48:06 · 481 阅读 · 0 评论 -
Go第 17 章 :反射
Kind 也是 int 比如: var stu Student stu 的 Type 是 pkg1.Student , Kind 是 struct。 请编写一个案例,演示对(基本数据类型、interface{}、reflect.Value)进行反射的基本操作。 请编写一个案例,演示对(结构体类型、interface{}、reflect.Value)进行反射的基本操作。Type 是类型, Kind 是类别, Type 和 Kind 可能是相同的,也可能是不同的.原创 2023-02-04 10:56:01 · 483 阅读 · 0 评论 -
Go第 16 章 :goroutine 和 channel
并发和并行多线程程序在单核上运行,就是并发多线程程序在多核上运行,就是并行需求:现在要计算 1-200 的各个数的阶乘,并且把各个数的阶乘放入到 map中。最后显示出来。要求使用 goroutine完成package main import("fmt" "time") var(myMap = make(map [ int ] int , 10)) // test 函数就是计算 n!, 让将这个结果放入到 myMa func test(n int) {i原创 2023-02-04 08:07:10 · 466 阅读 · 0 评论 -
Go第 15 章 :单元测试
Go 语言中自带有一个轻量级的测试框架 testing 和自带的 go test 命令来实现单元测试和性能测试,testing 框架和其他语言中的测试框架类似,可以基于这个框架写针对相应函数的测试用例,也可以基 于该框架写相应的压力测试用例。确保每个函数是可运行,并且运行结果是正确的确保写出来的代码性能是好的,单元测试能及时的发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决,而性能测试的重点在于发现程序设计上的一些问题,让程序能够在高并发的情况下还能保持稳定。原创 2023-01-30 10:08:35 · 989 阅读 · 0 评论 -
Go第 14 章 :文件操作
创建一个新文件,写入内容 5 句 “hello, Gardon”打开一个存在的文件中,将原来的内容覆盖成新的内容 10 句 “你好,尚硅谷!= nil {fmt . Println("open file err=" , err) return } defer file . Close() str := "你好,田毅!\r\n" // \r\n 表示换行 writer := bufio . NewWriter(file) for i := 0;i < 10;i ++ {原创 2023-01-29 13:18:17 · 459 阅读 · 0 评论 -
Go第 13 章 :2-客户信息关系系统
customerManage/model/customer.go [没有变化]原创 2023-01-12 10:49:31 · 362 阅读 · 0 评论 -
Go第 12 章 :1-家庭收支记账软件项目
在通过在 main方法中,创建一个结构体 FamilyAccount 实例,实现记账即可.把记账软件的功能,封装到一个结构体中,然后调用该结构体的方法,来实现记账,显示明细。根据给出的界面完成,主菜单的显示, 当用户输入 4时,就退出该程序。登记支出的功能和登录收入的功能类似,做些修改即可。构体的名字 FamilyAccount .原创 2023-01-08 11:26:22 · 435 阅读 · 0 评论 -
Go第 11 章 :面向对象编程(下)
Golang 仍然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其它 OOP 语言不一 样,下面我们一一为同学们进行详细的讲解 Golang 的三大特性是如何实现的。封装(encapsulation)就是把抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其 它包只有通过被授权的操作(方法),才能对字段进行操作继承可以解决代码复用,让我们的编程更加靠近人类思维。当多个结构体存在相同的属性(字段)和方法时,可以从这些结构体中抽象出结构体(比如刚才的。原创 2023-01-08 00:05:37 · 443 阅读 · 0 评论 -
Go第 10 章 :面向对象编程(上)
在某些情况下,我们要需要声明(定义)方法。比如 Person 结构体:除了有一些字段外( 年龄,姓名…),Person 结构体还有一些行为比如:可以说话、跑步…,通过学习,还可以做算术题。这时就要用方法 才能完成。Golang 中的方法是作用在指定的数据类型上的(即:和指定的数据类型绑定),因此自定义类型, 都可以有方法,而不仅仅是 struct。func (recevier type) methodName(参数列表) (返回值列表){方法体return 返回值参数列表:表示方法输入。原创 2023-01-06 19:43:37 · 531 阅读 · 0 评论 -
Go第 9 章:map
map 使用的课堂案例课堂练习:演示一个 key-value 的 value是 map 的案例比如:我们要存放 3 个学生信息, 每个学生有 name和 sex 信息思路: map[string]map[string]string切片的数据类型如果是 map,则我们称为 slice of map,map 切片,这样使用则 map 个数就可以动态变化了。原创 2023-01-06 10:25:22 · 327 阅读 · 0 评论 -
Go第 8 章:排序和查找
多维数组我们只介绍二维数组。原创 2023-01-06 00:50:27 · 245 阅读 · 0 评论 -
Go第 7 章:数组与切片
对上图的总结:1)数组地址可以通过数组名来获取 &intArr2)数组的第一个元素的地址,就是数组的首地址3)数组的各个元素的地址间隔是依据数组的类型决定,比如int64->8 int32->4…4)定义好一个数组但未赋值,则默认值为0切片的英文是 slice切片是数组的一个引用,因此切片是引用类型,在进行传递时,遵守引用传递的机制。切片的使用和数组类似,遍历切片、访问切片的元素和求切片长度 len(slice)都一样。切片的长度是可以变化的,因此切片是一个可以动态变化数组。原创 2023-01-06 00:33:48 · 226 阅读 · 0 评论 -
Go第 6 章:函数、包和错误处理
一个函数在函数体内又调用了本身,我们称为递归调用执行一个函数时,就创建一个新的受保护的独立空间(新函数栈) 2) 函数的局部变量是独立的,不会相互影响 3) 递归必须向退出递归的条件逼近,否则就是无限递归,死龟了:) 4) 当一个函数执行完毕,或者遇到 return,就会返回,遵守谁调用,就将结果返回给谁,同时当函数执行完毕或者返回时,该函数本身也会被系统销毁。原创 2023-01-05 22:21:52 · 286 阅读 · 0 评论 -
Go第 5 章:程序流程控制
switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上到下逐一测 试,直到匹配为止。匹配项后面也不需要再加 break听其名而知其意。就是让我们的一段代码循环的执行。break 语句用于终止某个语句块的执行,用于中断当前 for 循环或跳出 switch 语句。continue 语句用于结束本次循环,继续执行下一次循环。continue 语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环 ,这个和前面的 break 标签的使用的规则一样.原创 2023-01-03 19:25:56 · 363 阅读 · 0 评论 -
GO第 4 章:运算符
关系运算符的结果都是 bool 型,也就是要么是 true,要么是 false关系表达式 经常用在 if 结构的条件中或循环结构的条件中用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个 bool值赋值运算符就是将某个运算后的值,赋给指定的变量。在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。1)请看下面的代码段,回答a,b,c,d结果是多少?原创 2023-01-02 10:59:06 · 421 阅读 · 0 评论 -
Go项目实战:02-微服务micro services
Protobuf是Protocol Buffers的简称,它是Google公司开发的一种数据描述语言,是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或RPG数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前 提供了C+、Java、Python三种语言的APl。Protobuf刚开源时的定位类似于XML、JSON等数据描述语言,通过附带工具生成代码并实现将结构化数据序列化的功能。原创 2022-12-18 22:58:23 · 1110 阅读 · 0 评论 -
Go项目实战:01-聊天室+map竞争需要上锁
/名字 name string //唯一的id id string //管道 msg chan string } //创建一个全局的map结构,用户保存所有的用户 var allUsers = make(map [ string ] User)在handler中调用创建监听广播go程函数启动:读全局唯一写入上线数据bug修复。原创 2022-12-15 10:31:06 · 351 阅读 · 0 评论 -
go语言与c语言调用的方法
与“正常”的go代码相比,上述代码有几处“特殊”的地方:在开头的注释中出现了c语言头文件的include字样在注释中定义了c语言函数printimport了一个名为C的“包”在main函数中调用了上述定义的c语言函数print**这里的”C“不是包名,而是一种类似名字空间的概念,或可以理解为伪包,c语言所有语法元素均在该伪包下面;**最后,访问c语法元素时都要在其前面加上伪包前缀,比如C.uint和上面代码中的C.print、C.free等。原创 2022-11-04 09:26:03 · 677 阅读 · 0 评论 -
Go296:结构体标签
【代码】Go296:结构体标签。原创 2022-10-25 09:49:18 · 143 阅读 · 0 评论 -
Go295:json编解码介绍
记住,json语法要求最后一个元素后面,不能叫逗号。原创 2022-10-24 22:24:22 · 148 阅读 · 0 评论 -
G0294:http-server代码实现
【代码】G0294:http-server代码实现。原创 2022-10-23 21:57:00 · 102 阅读 · 0 评论 -
G0293:Http介绍
http协议:我们使用浏览器访问的时候发送的就是http请求。原创 2022-10-23 16:18:28 · 477 阅读 · 0 评论 -
Go292:socket-client--server 从单次连接到多次连接
【代码】Go292:socket-client--server 从单次连接到多次连接。原创 2022-10-23 10:39:41 · 817 阅读 · 0 评论 -
Go RPC
Socketa编程序列化(json/xml/…)原创 2022-10-22 21:25:42 · 244 阅读 · 0 评论 -
GO09:整型、浮点、字符类型的介绍和使用细节
【代码】GO010:整型的使用细节。原创 2022-12-22 18:22:06 · 954 阅读 · 0 评论 -
GO009:基本类型的使用
【代码】GO009:基本类型的使用。原创 2022-10-14 09:41:06 · 62 阅读 · 0 评论 -
GO008:数据类型的基本介绍
每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间。原创 2022-10-14 09:40:45 · 52 阅读 · 0 评论 -
GO007:Go使用变量
变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,同样的道理,通过变量名可以访问到变量(值)原创 2022-10-14 09:40:22 · 163 阅读 · 0 评论 -
GO006:Golang官方编程指南
官方文档原创 2022-10-13 21:43:35 · 113 阅读 · 0 评论 -
GO006:Golang开发常见问题和解决方法
学习编程最容易犯的错是语法错误。Go要求你必须按照语法规则编写代码。语法规侧,例如:忘记了大括号、引号,或者拼错了单词,Go编译器都会报语法错误,解决方法:源文件名不存在或者写错,或者当前路径错误。原创 2022-10-13 20:08:47 · 110 阅读 · 0 评论