合集-Golang学习
摘要:当声明枚举类型或定义一组相关常量时,Go语言中的`iota`关键字可以帮助我们简化代码并自动生成递增的值。本文档将详细介绍`iota`的用法和行为。 ### `iota`关键字 `iota`是Go语言中的一个预定义标识符,它用于创建自增的无类型整数常量。`iota`的行为类似于一个计数器,每次在常量
阅读全文
摘要:最近在研究[kratos](https://github.com/go-kratos/kratos)的使用,发现在`kratos run`之前会先运行`go generate ./...`命令。 这个命令之前没怎么用过,所以决定学习下该命令的用法。 `go generate`是Go语言中的一个命令,
阅读全文
摘要:简介: 在现代软件开发中,全球唯一标识符(UUID)在许多场景中发挥着重要的作用。UUID是一种128位的唯一标识符,它能够保证在全球范围内不重复。在Go语言中,我们可以使用第三方库`github.com/google/uuid`来方便地生成UUID。本文将介绍如何使用这个库来生成不同版本的UUID
阅读全文
摘要:原文在[这里](https://grpc.io/docs/languages/go/basics/)。 本教程为Go程序员提供了使用gRPC的基本介绍。 通过跟随本示例,你将学会如何: - 在.proto文件中定义一个服务。 - 使用协议缓冲编译器生成服务器和客户端代码。 - 使用Go gRPC A
阅读全文
摘要:`github.com/hyperledger/fabric-config/protolator` 是 Hyperledger Fabric 中的一个 Go 包,用于将 Protocol Buffers(ProtoBuf)消息和 JSON 格式之间进行转换。它提供了一种方便的方式来将 Fabric
阅读全文
摘要:原文在[这里](https://go.dev/blog/govulncheck) > 原文作者:Julie Qiu, for the Go security team 发布于 13 July 2023 我们很高兴地宣布,govulncheck v1.0.0 已经发布,同时还发布了用于将扫描集成到其他
阅读全文
摘要:GORM(Go Object-Relational Mapping)是一个用于Go语言的ORM库,它提供了一种简单、优雅的方式来操作数据库。GORM支持多种数据库,包括MySQL、PostgreSQL、SQLite和SQL Server。以下是GORM的一些主要特性: 1. **全功能ORM**:G
阅读全文
摘要:Go语言的泛型是在Go 1.18版本中引入的一个新特性,它允许开发者编写可以处理不同数据类型的代码,而无需为每种数据类型都编写重复的代码。以下是关于Go语言泛型的一些关键点: 1. 泛型是通过在函数或类型定义中使用类型参数来实现的。类型参数可以被看作是一个特殊的类型,它可以在函数或类型定义中的任何位
阅读全文
摘要:原文在[这里](https://go.dev/blog/go1.21)。 > 由Eli Bendersky, on behalf of the Go team 发布于 8 August 2023 Go团队今天非常高兴地发布了Go 1.21版本,你可以通过访问[下载页面](https://go.dev
阅读全文
摘要:创建zip文件 golang提供了archive/zip包来处理zip压缩文件,下面通过一个简单的示例来展示golang如何创建zip压缩文件: func createZip(filename string) { // 缓存压缩文件内容 buf := new(bytes.Buffer) // 创建z
阅读全文
摘要:本文主要是记录我搭建go playground的步骤。 1、安装docker 如果你使用的Ubuntu,docker的安装步骤可以参见这里,这是我之前写的在Ubuntu18.04下安装fabric,其中有docker的安装步骤,这里就不再赘述了。 CentOS下安装docker的,可以参见这里。与U
阅读全文
摘要:简介 zap是有uber开发的一款日志库。 zap提供了三个快速创建Logger方法: NewProduction: 以JSON格式记录Info级别及以上的标准错误日志 NewDevelopment: 以JSON格式记录Debug级别及以上的标准错误日志 NewExample: 提供一个测试实例,供
阅读全文
摘要:Logger Gorm提供了一个默认的logger实现,默认情况下日志数据级别为warn,同时输出慢SQL: Default = New(log.New(os.Stdout, "\r\n", log.LstdFlags), Config{ SlowThreshold: 200 * time.Mill
阅读全文
摘要:gin是一个使用Go语言开发的Web框架,具有运行速度快,分组的路由器,良好的崩溃捕获和错误处理,支持中间件等。 在工作中有时候需要支持https服务,gin可以通过中间件的方式来提供对https的支持,这里使用的是secure来提供https服务支持。这里给出一个简单的使用示例: 示例代码 pac
阅读全文
摘要:以下内容来自官方文档。 go version: 1.17.5 综述 plugin包实现了Go插件的加载和符号解析。 Go插件是一个包括了可导出函数和变量的main包(可以没有main()函数),构建时使用如下命令: go build -buildmode=plugin 插件应该在程序的init函数中
阅读全文
摘要:原文在[这里](https://go.dev/security/vuln/) ## 概述 Go帮助开发人员检测、评估和解决可能被攻击者利用的错误或弱点。在幕后,Go团队运行一个管道来整理关于漏洞的报告,这些报告存储在Go漏洞数据库中。各种库和工具可以读取和分析这些报告,以了解特定用户项目可能受到的影
阅读全文
摘要:Go语音中格式化时间不是常见的`y-m-d H:M:S`,而是使用**2006-01-02 15:04:05 -0700 MST**,也就是常说的`123456`。 > 之所以这么用,据说Go是在这个时间节点诞生的 在go 1.20之前,除了自定义时间格式外,还可以使用`time`包中预定义的格式:
阅读全文
摘要:在Linux系统中执行操作时,进程可以通过发送和接收信号与其他进程进行通信。信号是用于通知进程发生特定事件或请求进程采取特定动作的软件中断。 以下是Linux系统中常见的一些信号及其含义: 1. **SIGINT (2)**:中断信号,通常由终端用户按下`Ctrl + C`发送给前台进程。该信号用于
阅读全文
摘要:原文在[这里](https://go.dev/blog/pgo-preview)。 > 原文发布于2023年2月8日 在构建Go二进制文件时,Go编译器会进行优化,以尽可能生成性能最佳的二进制文件。例如,常量传播可以在编译时对常量表达式进行求值,避免了运行时的计算开销;逃逸分析可以避免对局部作用域对
阅读全文
摘要:在日常开发工作过程中,很多时候我们都需要在自己的机器上安装多个go版本,像是go1.16引入的embed,go1.18引入了泛型;又或是自己本地使用的是最新版,但公司的项目中使用的go1.14、go1.13甚至是更早的版本。 那么有没有既不影响我们自己的本地环境,又能兼顾历史项目的办法呢?答案当然是
阅读全文