golang slice

Golang 使用 JSON unmarshal 数字到 interface{} 数字变成 float64 类型

最近在golang业务开发时,遇到一个坑。 我们有个服务,会接收通用的interface对象,然后去给用户发消息。因此会涉及到把各个业务方传递过来的字符串,转成interface对象。 但是因为我的字符串里有一个数字,比如下面demo里的{"number":1234567},而且数字是7位数,在经过 ......
数字 unmarshal interface 类型 Golang

VScode 中golang 基准测试 go test -bench .

目的:基准测试的主要目的是比较不同实现方式之间的性能差异,找出性能瓶颈。 1 准备以_test.go结尾文件和导入testing包 在命名文件时需要让文件必须以_test结尾,在文件中导入testing包。基准测试可以测试一段程序的运行性能及耗费CPU的程度,获得代码内存占用和运行效率的性能数据。G ......
基准 VScode golang bench test

golang继承多态使用心得

很多人都说用go代替php或者java的最大短板就是写业务太反人类。经过最近的一些使用,发现确实与常见的java或者c++这种有些区别,在这里说明一下。 # go继承多态的现状 ## go没有类的概念 也没有所谓的继承多态。所以按照常规用法开发相应的业务逻辑,确实不适用。 ## go只有struct ......
心得 golang

我用 GPT-4 生成了性能全网第一的 Golang Worker Pool,轻松打败 GitHub 万星项目

目录 1. 我写了一个超牛的开源项目 1.1 你看看这性能 1.2 你看看这功能 1.3 你猜我这一百天都经历了啥 2. 你有多久没写并发程序了? 3. 问:一个 Worker Pool 程序需要包含哪些功能? 4. 让 GPT-4 写第一行代码! 4.1 我对 GPT-4 说 4.2 GPT-4 ......
全网 性能 项目 Golang GitHub

golang用pgx查询数据时如何将查询结果方便的放入Map中

pgx库简介 下面是来自官网的简介: pgx - PostgreSQL驱动和工具包 pgx是一个用于PostgreSQL的纯Go语言驱动和工具包。 pgx驱动是一个底层的高性能接口,暴露了PostgreSQL特有的功能,如LISTEN/NOTIFY和COPY。它还包含一个标准database/sql ......
结果 数据 golang Map pgx

Golang反射type和kind有什么区

一、前言 Go语言中的反射是由 reflect 包提供支持的,它定义了两个重要的类型 Type 和 Value 。任意值在反射中都可以理解为由 reflect.Type 和 reflect.Value 两部分组成,并且 reflect 包提供了 reflect.TypeOf 和 reflect.Va ......
Golang type kind

仅三天,我用 GPT-4 生成了性能全网第一的 Golang Worker Pool,轻松打败 GitHub 万星项目

[TOC] ## 1. 我写了一个超牛的开源项目 激动的心,颤抖的手,我用 [DevChat](https://github.com/devchat-ai/devchat) 白嫖 GPT-4 写下了这辈子写过的最炫酷,最艺术的一千行代码! 我用 Golang 写了一个强大又易用的 Worker Po ......
全网 性能 项目 Golang GitHub

golang json字符串转结构体

1、不知道结构体类型的情况下 func JsonStringToMap(jsonStr string) (map[string]interface{}, error) { //未知值类型 m := make(map[string]interface{}) err := json.Unmarshal( ......
字符串 字符 结构 golang json

浅谈splice( )与slice( )

1、splice( ) 概念:splice( )用于修改原始数组,它可以删除、插入、替换数组的元素,并返回被删除的元素组成的新数组。 语法:splice(start,deleteCount,item1,item2,itemN) start:开始位置,规定添加/删除的起始位置。从 0 开始计算的索引, ......
splice slice

Golang基础

# 1、GOLANG概述 ## 1.1 语言特点 ## 1.2 开发工具 ## 1.3 相关文档 - 官方编程指南 - 标准库API文档 # 2、规范的代码风格&注释 ## 2.1 注释&注释风格 ## 2.2 缩进&空白 # 3、编码 # 4、数据类型 ## 4.1 基本数据库类型 1. 变量 2 ......
基础 Golang

golang并发编程

Go 语言是一种支持并发编程的编程语言,它内置了协程(goroutine)和通道(channel)等机制,可以方便地实现并发编程。在 Go 语言中,一个协程是一个独立的工作单元,可以在不同的协程之间进行通信和协作。Go 语言中的并发编程主要使用 go、chan、select 及 sync 库完成同步... ......
golang

[golang]使用tail追踪文件变更

## 简介 借助 `github.com/hpcloud/tail` ,可以实时追踪文件变更,达到类似shell命令`tail -f`的效果。 ## 示例代码 以下示例代码用于实时读取nginx的`access.log`日志文件,读取到后输出到控制台。如果nginx日志做了json格式化,还可以解析 ......
文件 golang tail

VScode 中golang 单元测试,解决单元测试超时timeout30s

目的:单元测试的主要目的是验证代码的每个单元(函数、方法)是否按照预期工作。 提示:解决单元测试超时30s的问题在序号4 1 准备以_test.go结尾文件和导入testing包 在命名文件时需要让文件必须以_test结尾,在文件中导入testing包。单元测试源码文件可以由多个测试用例组成,每个测 ......
单元 timeout VScode golang 30s

跳表的原理--Golang 实现一个简单跳表

## 前言 最近在看《Redis 设计与实现》这本书,书中简单描述了跳表的性质和数据结构,但对它的具体实现没有多讲。 书里对跳表结构的描述是这样的: ![image](https://img2023.cnblogs.com/blog/3120527/202308/3120527-2023080111 ......
原理 Golang

Golang 接收Get、Post请求

Get 1、接收 func GetGet(w http.ResponseWriter, r *http.Request) { defer func() { r.Body.Close() if r := recover(); r != nil { stackBytes := debug.Stack() ......
Golang Post Get

VScode 中golang 调试 F5,json文件内容更改 Go

调试:在Vscode软件中调试.go文件代码 1.1.1 确保调试文件正常运行 准备好.go文件,并且该文件能正常运行,终端输入命令运行程序,如:go run time.go 测试代码: package main import ( "fmt" "time" ) func main() { fmt.P ......
文件 内容 VScode golang json

golang-groutine有序调度

本质上还是通过channel的队列性质(FIFO)来实现的,以这个思路为主。 1 func test1() { 2 var wg sync.WaitGroup 3 4 var ch1 = make(chan int, 1) 5 var ch2 = make(chan int, 1) 6 var ch ......
golang-groutine groutine golang

Golang漏洞管理

原文在[这里](https://go.dev/security/vuln/) ## 概述 Go帮助开发人员检测、评估和解决可能被攻击者利用的错误或弱点。在幕后,Go团队运行一个管道来整理关于漏洞的报告,这些报告存储在Go漏洞数据库中。各种库和工具可以读取和分析这些报告,以了解特定用户项目可能受到的影 ......
漏洞 Golang

GoRedisLock:Golang保障数据一致性的分布式锁解决方案

在现代分布式系统中,多个节点之间共享资源是常见的需求。然而,并发访问共享资源可能导致数据不一致性和竞争条件。为了解决这些问题,我们需要引入分布式锁。GoRedisLock是一个出色的分布式锁库,它结合了Go语言和Redis的优势,提供了稳定高效的分布式并发控制解决方案。 **项目地址:** http ......

golang打印指针切片/数组的值

FmtSlice2String方法可以将指针切片的值打印处理 package main import ( "fmt" "reflect" ) type Student struct { Name string `json:"name" cn:"名字"` Age uint64 `json:"age" ......
数组 指针 golang

Golang gRPC学习(05): retry重试

## 什么是重试 如果服务出现了错误,主要是网络,服务器出现了短暂异常的时候,该怎么办? 我们都会人工或者自动的重新连接服务试试,看服务是否恢复可用了。 这种重新进行连接服务的一种方式就是重试。如果是在微服务里,应该属于微服务治理的范畴。 重试是处理网络服务出现暂时不可用的一种方法。 ## 怎么进行 ......
Golang retry gRPC 05

golang技术降本增效的手段

最近一年各大中小厂都在搞"优化",说到优化,目的还是"降本增效",降低成本,增加效益(效率)。 技术层面,也有一些降本增效的常规操作。 比如池化、io缓冲区技术 | | golang | C# | eg. | | | | | | | 池化技术 | snnc.Pool | ObjectPool | 前 ......
手段 golang 技术

Golang安装

[TOC](目录) # Go安装 ## 下载安装Go 地址:[https://studygolang.com/dl](https://studygolang.com/dl) 1、根据系统来选择下载包。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b2854cb5 ......
Golang

Golang之工作区workspace

快速开始 创建工作区 写一个最简单的基础项目实际演练一下 Go workspace。 首先,创建 workspace 工作区。 $: mkdir workspace $: cd workspace $: go work init 完成以上步骤后,工作区目录就会出现一个新的文件 go.work . 内 ......
工作区 workspace Golang

Golang中结构体映射mapstructure库深入详解

mapstructure用于将通用的map[string]interface{}解码到对应的 Go 结构体中,或者执行相反的操作。很多时候,解析来自多种源头的数据流时,我们一般事先并不知道他们对应的具体类型。只有读取到一些字段之后才能做出判断 + 目录 在数据传递时,需要先编解码;常用的方式是JSO ......
mapstructure 结构 Golang

go map中的slice

看以下代码: func main() { mym := make(map[int32][]bool) slice, ok := mym[1] if !ok { slice = []bool{} mym[1] = slice } slice = append(slice, false) print(m ......
slice map go

golang版本管理-gvm

1 如果你是mac 简单 brew install go 2 其他就用 # zshzsh < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) # bash u ......
版本 golang gvm

Golang的GC和内存逃逸

简介 每个版本的Golang的垃圾回收都在不断优化中,而且方法和策略都在变化,因此这里只是总结出以下几个关键点: 什么样的数据需要GC 触发GC的条件是什么 GC时发生了什么 能否从代码层面上提高GC的效率 GC的基本流程 Golang在确定的时间,或者内存分配到达一定程度时,进行GC。GC时,会停 ......
内存 Golang

golang中defer的作用

defer是golang里面一个很有用的语法,但很多人可能都不太清楚它具体应该怎么用,博主之前就因为用错了引起了一些bug。 ......
作用 golang defer

Golang 规则引擎原理及实战

本文主要介绍规则引擎在 golang 中的使用,将首先介绍 golang 中主要的规则引擎框架,然后利用 golang 原生的 parser 搭建一个简单的规则引擎实现基本的 bool 表达式解析工作。 背景 随着业务代码的不断迭代,诞生出了越来越多的 if-else,并且 if-else 中的逻辑 ......
实战 原理 规则 引擎 Golang