going
Go语法糖——简短变量声明“:=”
参考地鼠文档——GO专家编程中的内容,我总结了关于 := 的几条规则,并以代码举例的运行结果来说明可行性,以避免编程中出现一些陷阱。 规则一:不能用于函数外部 package main import "fmt" rule := "Short variable declarations" func m ......
go程序启动过程
go的启动入口函数 对go有开发经验的朋友都知道,main函数不是真正的启动入口,只是go暴露给用户编写的业务的接口。 这点上基本所有的语言都是类似,在main函数调用前,go需要做一系列的准备工作。 go的启动在 runtime/rto XXX.s, xxx是因为平台的差异。不同系统不同芯片都有自 ......
go 编译 ssa与Plan9
一、目的 简单看下go编译过程,便于理解go为什么能编译出不同平台都能运行的可执行文件,克服了c和c++需要针对不同平台分开编译的问题。 那些过程能在开发过程中用到,帮助定位问题。 二、整体 编译前端的都好理解,语义分析时候,需要进行go的逃逸分析。 中间码生成 ssa 任意写一个demo: imp ......
Go 自动生成代码工具二 (在proto文件中定义http的接口,并自动生成gin的接口工具)
一、需求分析 在和前端对接过程中,需要后端维护一份接口文档,对于这份文档的维护在实际工作中会有一系列的问题,例如参数个数、参数类型、返回类型等。 主要还是后期需要一直维护,如果改了接口,忘记维护文档就会导致前端调用异常。 但是当使用 protobuf定义好了接口,微服务相互间调用,一般不会出现这类问 ......
go: -race requires cgo cgo: C compiler "gcc"
go run -race main.go --action pubgo: -race requires cgo; enable cgo by setting CGO_ENABLED=1 cgo: C compiler "gcc" not found: exec: "gcc": executable ......
Go 自动生成代码工具 一( go-zero 中 goctl rpc 命令代码生成原理)
总共分为三篇: 1. 分析`go-zero`中 ` coctl rpc` 通过一个` proto`文件生成一系列文件。 2. 模仿这个原理,结合`protoc` 生成代码的特性,把gin的接口定义,也放入proto文件中,自动生成gin的接口代码。 3. 自动生成项目中error错误定义文档。(通过 ......
go map的坑
range时不能动态的增加map的range范围 golang的map是hash表实现的,hash表的遍历就是遍历所有的桶,所以新添加的元素可能出现在之前遍历过的桶中,这样就会有些新添加的元素可能遍历不到。 实际生成环境中,不建议遍历一个正在写入的map,这并不是一种好的设计,如果确实有这样的需求, ......
electron+go开发记录
// 设置应用通过防火墙,electron方面 const command = `netsh advfirewall firewall add rule name="mange" dir=in program="${mange}" action=allow` // cmd允许应用通过防火墙的命令 / ......
Prometheus Go client library 详解
介绍 Prometheus 支持 4 种 指标类型,分别是 Counter、Gauge、Histogram 和 Summary。 Counter 指标类型,指标值是只能递增,不能递减的数值。需要注意的是,当 Prometheus server 重启时,指标值会被重置为 0。该指标类型可用于统计接口的 ......
在 Go-Kratos 框架中优雅的使用 GORM 完成事务
准备工作 创建新项目 kratos new helloworld cd helloworld # 拉取项目依赖 go mod download # 项目中的 config 等请自行修改 添加事务 如果您还不了解 Kratos、 mysql 事务 和 GORM 的话请先了解一下。 data 层承载事务 ......
2023-11-25:用go语言,给定一个数组arr,长度为n,表示n个格子的分数,并且这些格子首尾相连, 孩子不能选相邻的格子,不能回头选,不能选超过一圈, 但是孩子可以决定从任何位置开始选,也可以
2023-11-25:用go语言,给定一个数组arr,长度为n,表示n个格子的分数,并且这些格子首尾相连, 孩子不能选相邻的格子,不能回头选,不能选超过一圈, 但是孩子可以决定从任何位置开始选,也可以什么都不选。 返回孩子能获得的最大分值。 1 <= n <= 10^6, 0 <= arr[i] < ......
go 上下文:context.Context
go 上下文:context.Context 原创 孟斯特 孟斯特 2023-11-17 08:30 发表于北京 收录于合集#Golang92个 Go语言中的上下文(Context)是一种用于在 Goroutines 之间传递取消信号、截止时间和其他请求范围值的标准方式。context 包提供了 C ......
Jaeger Client Go 链路追踪|入门详解
目录 从何说起 Jaeger 部署 Jaeger 从示例了解 Jaeger Client Go 了解 trace、span tracer 配置 Sampler 配置 Reporter 配置 分布式系统与span 怎么调、怎么传 HTTP,跨进程追踪 客户端 Web 服务端 Tag 、 Log 和 R ......
go--条件判断 if、switch
if 基本语法 if 条件A{ ... }else if 条件B{ ... }else if 条件C{ ... }else{ ... } 例子 package main import "fmt" func main() { var fruit string = "6 个苹果" var waterme ......
Go标准库学习:strings和bytes
strings包和bytes包 strings包和bytes包非常像,几乎所有函数都有string和[]byte两种接口,其中前者被实现在strings包中,而后者被是现在bytes包中,所以这里将这两个包一起学习。 官方文档: strings包:https://pkg.go.dev/strings ......
go-view 依赖库
go-view 依赖库 const packageReadme = { "name": "go-view", "version": "2.2.6", "engines": { "node": ">=12.0" }, "scripts": { "dev": "vite --host", "build" ......
2023-11-22:用go语言,给你一个长度为 n 下标从 0 开始的整数数组 nums。 它包含 1 到 n 的所有数字,请你返回上升四元组的数目。 如果一个四元组 (i, j, k, l) 满足
2023-11-22:用go语言,给你一个长度为 n 下标从 0 开始的整数数组 nums。 它包含 1 到 n 的所有数字,请你返回上升四元组的数目。 如果一个四元组 (i, j, k, l) 满足以下条件,我们称它是上升的: 0 ⇐ i < j < k < l < n 且 nums[i] < n ......
学习mongo和go
mongo: moduleData, ok := result.Lookup("context1", "context2").DocumentOK() result.Lookup("context1", "context2") 用于检索名为 "content1" 的字段,并且该字段的值又是一个嵌套的 ......
基于go-zero的api网关示例
以下是基于 go-zero 框架的 API 网关示例。这个示例包括一个简单的 API 网关,它接收 HTTP 请求,将请求路由到不同的服务,并返回响应。 创建项目 首先,在 go-zero 仓库中创建一个新的目录: mkdir api-gateway cd api-gateway 创建 Go 文件 ......
基于go-zero的rpc服务示例
以下是一个基于 go-zero 框架的简单 RPC 服务示例,该示例包括一个服务端和一个客户端通过 gRPC 进行通信。 服务端 1、定义 .proto 文件 在 rpc/add 目录下创建 adder.proto 文件,定义 RPC 服务: syntax = "proto3"; package a ......
Go使用开源库go-excelize操作Excel文件
以下是一个示例代码,读取一个 Excel 文件并打印其中的所有单元格值: package main import ( "fmt" "github.com/30x/go-excelize" ) func main() { // 打开 Excel 文件 f, err := excelize.OpenFi ......
go ants使用
NewPoolWithFunc -> func(data interface{}) -> data.(Task) -> Task.Do 上面的这些函数都是同步的,添加到 NewPoolWithFunc中后,执行 invoke会变成异步 NewPool和NewPoolWithFunc本质是一样的,都是 ......
go errgroup用法
草稿 errgroup就是在waitgroup基础上封装了一层。 我还是不喜欢 go的这个控制goroutine的方式。 只贴一下代码: func main() { eg, ctx := errgroup.WithContext(context.Background()) for i := 0; i ......
[Go] "Method Declaration" on a custom type
package data // new type type distance float64 type distanceKm float64 // add ToKm method to distance type func (miles distance) ToKm() distanceKm { / ......
pb.go 转 proto 文件
使用python将pb.go 文件转为proto文件 编程语言不限,挺简单的,不熟悉python的可以看看逻辑,自己改下 import os import re # 处理字段选项 def dispose_field_type(ft: str): ft = ft.replace("*", "") if ......
【go】【test】benchmark
@目录写在前面 go 测试基础测试fib.gotest_fib.go使用内存generate_test.go测试参数测试generate_test.go参数测试timeRestnullsort_test.go 测试开始记时⌛️和测试结束计时⌛️测试参考资料 写在前面 相关博文 个人博客首页 免责声明 ......
go使用context.withtimtout取消一个超时操作
3 使用context.WithTimeout: package mainimport ("context""fmt""time")func main() {timeout := 5 * time.Secondctx, cancel := context.WithTimeout(context.Ba ......
Go基础面经题
Go基础 1. 基础特性 Go的优势 天生支持并发,性能高。 单一的标准代码格式,比其他语言更具可读性。 自动垃圾收集机制比Java和Python更有效,因为它与程序同时执行。 Go数据类型 int, string, float, bool, array, slice, map, channel, ......
go的类型断言跟静态转换
Go 中的类型断言与静态转换 原创 TimLiu 爱发白日梦的后端 2023-10-15 10:47 发表于广东 收录于合集#go95个 类型断言 在 Go 中,类型断言用于提取和测试接口值的动态类型。通过断言,您可以确定接口值是否持有特定的底层具体类型,如果持有,则获取该值。下面是一个如何在 Go ......