文章分类 - go 基础加强篇
课程主要内容:
(1):go的进阶代码套路,语法加强培训
(2):设计模式(Web背景)Web,中间件(consul,etcd,tidb),偏低层(docker,k8s)
httpserver rpc/grpc http3(quic) go-micro gokit gin gin++
(3):go一些主流和高逼格的第三方库结合
摘要:有了上面的tag属性我们可以把上篇的代码给改造一下 改造要求:属性和tag任何一个匹配到就取值 优化一下目录结构代码,将Map2Struct函数提取出来当做一个类方法使用 main函数引入新建包进行该函数所属类的实例化,并进行类方法的调用
阅读全文
摘要:一:利用反射设置Struct属性值 方法1: 方法2: 二:切片映射到struct 练习 values:=[]interface{}{12,"痞子胥"} 假设给定一组值,分别“映射到”struct 属性里面
阅读全文
摘要:一:Kind函数判断传入的struct模型是否为指针 二:如何通过循环获取struct属性的值 方法1: 方法2: 上面的每个属性都需要进行判断,如果属性过多判断比较麻烦,可以把值通过interface接口的通用类型给展现出来
阅读全文
摘要:所谓反射 在运行时(强调运行时)动态获取(类型或类别)或设置(值)变量的各种信息,比如变量的类型(type)类别(kind),值(value) 两个典型方法 reflect.TypeOf(变量) :专门用来处理类型 reflect.ValueOf(变量) :专门用来处理值 Elem函数 用来获取指针
阅读全文
摘要:一:引言:上篇代码也可以不使用SaveModel方法而在结构体struct里是可以把自己也给返回出来的 步骤一: 步骤二: 步骤三: 二:上面我们做了个没有参数的调用类方法的调用,在实际开发中类方法中要有参数的传递比如save()里面需要有参数 但是要传递什么?比如我们的案例中有UserServic
阅读全文
摘要:一:使用接口简化上篇代码 二:链式调用 第一步:先在接口添加 继承的方法 第二步:分别在两个服务里添加List()方法 第三步:链式调用的写法
阅读全文
摘要:Interface 高级语言中: class 代表类interface代表接口 前者是对业务对象的封装或定义,后者是对业务对象的抽象 这些在go里面对应的是: struct和interface interface 抽象出各个服务的共同点 比如用户服务和商品服务 的共同点保存入库和获取列表 UserS
阅读全文
摘要:问题引入:上篇的字符串的累加 基准测试调用代码: 字符串累加的第三种方法: 三种方法的基准测试(拼接的字符串数据比较少那么方法二和方法三性能差不多,如果拼接的字符串太多方法2性能就比较高)
阅读全文
摘要:基准测试:属于性能测试的一种 是指:对某个特定场景的--某项性能指标--进行定量的和可对比的测试 也可以使用命令行的方式运行 如果只想执行某一个基准测试代码,需要在其它基准测试代码加上b.Skip(),如下: 同时执行N次基准调试 -count N 正则的使用,调用指定的基准测试函数 (1):调用指
阅读全文
摘要:表驱动法: 从“表”里面查找信息而不使用if,else等逻辑语句的编程模式,使用表驱动法,生成代码比复杂逻辑代码更简单更容易修改 通过查表的方式来快速体现我们的单元测试的函数所运行的结果是否符合我们的期望 将新生成的Helper_test.go文件代码复制到mytest/str_test.go 文件
阅读全文
摘要:本篇是对go的单元测试和性能测试工具做一个简单的入门,有些语言是需要第三方库来实现完成的,go自带一个轻量级的测试工具 这里做个入门,在后面的篇幅还会继续加强使用 go自带的单元测试和性能测试模块,仅需要添加很少的代码就可以快速测试一段需求代码,我们可以手写,也可以使用第三方的插件 来自动生成,或者
阅读全文
摘要:上一篇我们讲到对map字段的排序,这篇我们讲解下如果多个map塞到切片之后的排序方法 假如我们想按照age的大小排序,该怎么办? 我们通过go的sort包可以对自定义的类型不管是map还是struct都是可以通过一个函数来进行排序的,演示如下:
阅读全文
摘要:问题引入:map的遍历是不能按照顺序打印出来的,比如上篇的代码打印结果如下: 一:排序Map Key、Sort包的初步使用 需要分两步 第一步:把key获取出来,塞到一个数组或者切片里面一般来说是切片 因为key是string类型的,所以定义一个User的类方法,返回值类型为string切片类型 m
阅读全文
摘要:一:继续改造上篇自定义的map结构类型--改造返回值显示样式 上节的返回值显示样式为:map[id:101 name:痞子胥] 接下来进行改造: User类: main主函数进行调用
阅读全文
摘要:一:对自定义的map类型进行值的设置 main主函数进行调用 二:支持链式调用 链式调用有简单方法也有复杂方法,先来看下简单方法 (1): 简单的链式调用方法: main主函数的调用方式 为了后续的方便演示和书写,我们把自定义的map类型的值修改为空接口类型interface{}, 因为值类型为st
阅读全文
摘要:map的使用:在使用第三方库和进行类库的封装的时候经常使用到 一:基本使用 二:新建目录自定义map类型 进行自定义的map类型调用
阅读全文
摘要:上篇代码已经可以实现我们的业务逻辑了,如果想要进一步提升我们的代码逼格,可以学习下本篇 优化1:对构造函数返回 函数类型的 改造 所谓的类的构造函数修改如下: 优化2:对构造函数中返回类型 函数的调用的改造 改造如下: 优化三: 优化方案如下: 结构体修改如下: 执行调用会正常执行:
阅读全文
摘要:一:NewUser方法修改为可变参数的形式如下: main函数对其进行调用: 二:如果再添加个属性操作: main函数执行调用 三:代码的文件整理:
阅读全文
摘要:在go里面不支持重载(多个同名方法根据参数不同进行调用) 如上,我们在初始化User的时候可能想对struct结构体中任意一个,或多个属性进行赋值 如果定义很多方法去进行单独属性设置或者属性组合进行赋值比较麻烦也不现实 我们一步步来引导实现: 引导1:有选择性的对Id进行赋值(可以赋值也可以不赋值)
阅读全文

浙公网安备 33010602011771号