赵海宇的博客 路漫漫其修远兮,吾将上下而求索。
拥有标签 golang 的文章:

Go错误处理

error定义 数据结构 go语言error是一普通的值,实现方式为简单一个接口。 // The error built-in interface type is the conventional interface for // representing an error condition, with the nil value representing no error. type error interface { Error() string } 创建error 使用errors.New() // New returns an error that formats as the given

项目目录结构

什么是DDD? DDD 是 Domain-Driven Design 的缩写。 其主要的思想是,我们在设计软件时,先从业务出发,理解真实的业务含义,将业务中的一些概念吸收到软件建模中来,避免造出“大而无用”软件。也避免软件设计没有内在联系,否则一团散

Go泛型入门

备注:这是一个 beta 版本的内容 这个教程介绍了 Go 泛型的基础概念。 通过泛型,你可以声明并使用函数或者是类型,那些用于调用代码时参数需要兼容多个不同类型的情况。 在这个教程里,你会声明两个普通的函数,然后复制一份

Nethttp Gin

net/http 路由注册 func test1() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello world!") }) err := http.ListenAndServe(":9001", nil) if err != nil { log.Fatal("ListenAndServer:", err) } } 在使用ListenAndServe这个方法时,系统就会给我们指派一个路由器,DefaultServeMux是系统默认使用的路由器,如果Li

Go工程化 - 依赖注入

我们在微服务框架kratos v2的默认项目模板中kratos-layout使用了google/wire进行依赖注入,也建议开发者在维护项目时使用该工具。 wire 乍看起来比较违反直觉,导致很多同学不理解为什么

Go Gin框架介绍及使用

Gin框架介绍 基于httprouter开发的Web框架。 中文文档,齐全。 简单易用的轻量级框架。 Gin框架安装 go get -u github.com/gin-gonic/gin 实例: package main import ( "fmt" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() // 创建一个默认的路由引擎 // 也可以用gin.New()

Go gc垃圾回收

垃圾回收(Garbage Collection,简称GC)是编程语言中提供的自动的内存管理机制,自动释放不需要的对象,让出存储器资源,无需程序员手动执行。 Golang中的垃圾回收主要应用三色标记法,GC

Go web源码解析

Go的web工作原理 在Go中使用及其简单的代码即可开启一个web服务。如下: //开启web服务 func test(){ http.HandleFunc("/", sayHello) err := http.ListenAndServe(":9090",nil) if err!=nil { log.Fatal("ListenAndServer:",err) } } func sayHello(w http.ResponseWriter, r *http.Request){ r.ParseForm() fmt.Println("path",r.URL.Path) fmt.Println("scheme",r.URL.Scheme) fmt.Fprintf(w, "Hello Guest!") } 在使用ListenAndServe这个方法时,系统就会给

Go zap高性能日志

摘要 日志在整个工程实践中的重要性不言而喻,在选择日志组件的时候也有多方面的考量。详细、正确和及时的反馈是必不可少的,但是整个性能表现是否也是必要考虑的点呢?在长期的实践中发现有的日志组件对于计算资源的

Go viper配置管理

安装 go get github.com/spf13/viper viper支持的功能 1、可以设置默认值 2、可以加载多种格式的配置文件,如JSON,TOML,YAML,HCL和Java属性配置文件 3、应用程序运行过程中,保持监听和重新读取配置文件 4、可以从

Go操作redis

安装 下载第三方包: go get -u github.com/go-redis/redis/v9 连接 // 定义一个rdis客户端 var redisdb *redis.Client // 初始化 func initClient() (err error) { redisdb = redis.NewClient(&redis.Options{ Addr: "localhost:6379", // post端口 Password: "", // 密码 DB: 0, // 使用redis的库 }) _, err = redisdb.Ping(context.Background()).Result() if err != nil { fmt.Println("连接失败

Go HTML标签提取器soup

什么是soup 类似python中beatifulsoup,用于提取html标签提取,多用于爬虫。它可以很好的处理不规范标记并生成剖析树(parse tree)。 它提供简单又常用的导航,搜索以及修改剖析树

Go单元测试

go test go test命令是一个按照一定的约定和组织来测试代码的程序。在包目录内,所有以_test.go为后缀名的源文件在执行go build时不会被构建成包的一部分,它们是go test测试的一部分。 go test

Go Channel

什么是channel channels 是一种类型安全的消息队列,充当两个 goroutine 之间的管道,将通过它同步的进行任意资源的交换。chan 控制 goroutines 交互的能力从而创建了 Go 同步机制。当创建的 chan 没有容量时,称为无缓冲通道。反过来,使用

Go context包

go context标准库 context包在Go1.7版本时加入到标准库中。其设计目标是给Golang提供一个标准接口来给其他任务发送取消信号和传递数据。其具体作用为: 可以通过context发送取消信号。