斜杠golang

在windows10上安装多个golang

在windows10上安装多个golang # 原理 下载不同go版本,然后重命名go可执行文件,然后配置环境变量,不同命令使用不同的版本。 其实所有的开发环境都可以这么使用。比如python2,python3 # 方法 问的[文心一言](https://yiyan.baidu.com/),哈哈哈哈 ......
多个 windows golang 10

golang-waitgroup

说明 golang通过waitgroup来实现并发控制,用法跟java的CountDownLatch 效果一样 WaitGroup 的使用场景和方法 我们通过goroutine运行一个或者一组任务,需要关心这组任务执行完了进行通知 WaitGroup 如同它的字面意思,就是等待一组 goroutin ......
golang-waitgroup waitgroup golang

一个思路:实现 golang 中的 `__file__` `__line__` 宏

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 测试 zaplog 发现,开启 caller 的调用,会使整个服务增加 2% 的损耗。 其实文件及其行号完全可以在编译期加上去,没必要带来运行期的性能损耗。 ......
思路 golang file line

golang 反射

参考 https://www.cnblogs.com/jiujuan/p/17142703.html float反射示例 package main import ( "fmt" "reflect" ) func main() { var x float64 = 1.2345 fmt.Println( ......
golang

golang Context应用举例

Context本质 golang标准库里Context实际上是一个接口(即一种编程规范、 一种约定)。 type Context interface { Deadline() (deadline time.Time, ok bool) Done() <-chan struct{} Err() err ......
Context golang

Golang method | Interfaces 示例

方法与接口(method Interface) package interFaces import ( "fmt" "log" ) // manager Appstore online account type Account struct { surName string givenName st ......
示例 Interfaces Golang method

Golang视频学习地址

GO 视频学习资料 Go编程基础: https://study.163.com/course/courseMain.htm?courseId=306002 8小时转职Golang工程师(如果你想低成本学习Go语言):https://www.bilibili.com/video/BV1gf4y1r79 ......
地址 Golang 视频

Golang 命名返回值和普通返回值

1、概述 在Go语言中,函数可以有命名返回值和普通(匿名)返回值。命名返回值会被视为定义在函数顶部的变量,并且在使用 return 语句返回时,不再必须在其后面指定参数名,也就是支持“裸”返回;而使用普通返回值时,使用 return 语句返回时,需要在其后面指定与普通返回值相同类型的参数名。 实际上 ......
Golang

golang 多生产者+多消费者模式

参考 https://gist.github.com/vitan/aedb628a40478cf8b6a33dc87a5ff52f https://gist.github.com/mochow13/74ee57078d58536929575ab481dd9693 1 package main imp ......
产者 消费者 模式 golang

Golang 的骚操作:go:linkname

背景 在看源码时,一些源码方法没有方法体,难道说明这些方法为空?例如:time.Now调用的 now(), time.Sleep , reflect.makechan // Provided by package runtime. func now() (sec int64, nsec int32, ......
linkname Golang go

golang 1.18 workspace mode

why ? 为什么需要workspace 历史发展和版本依赖的管理 GOPATH 最开始的模式 开发者需要设置一个环境变量 GOPATH,用于指定项目的工作空间。GOPATH 是一个目录路径,其中包括了三个重要的子目录:src、bin 和 pkg 通过 go get 命令,GOPATH/src 下的 ......
workspace golang 1.18 mode 18

golang 的循环导入

内容来自对 chatgpt 的咨询 循环导入概念 在Go语言中,循环导入是一个需要避免的问题。它发生在两个或更多的包彼此导入对方,形成一个导入循环,导致编译器无法处理。 例如,假设你有两个包,包A和包B。包A导入了包B,然后包B又导入了包A,这就形成了一个循环导入。在这种情况下,编译器将无法确定要首 ......
golang

golang 代码实现判断当前时间是否在"19:00"和"24:00"这两个时间范围内

代码是 chatgpt 写的 package main import ( "fmt" "time" ) func main() { now := time.Now() // 获取今天的年月日 year, month, day := now.Date() // 创建两个新的时间点,它们在今天的 19: ......
quot 时间 范围 两个 代码

golang 怎么使用接口中声明的方法

假设你有一个golang 的 interface,里面声明了1个函数,怎么调用这个函数 type Man interface { Eat(ctx context.Context, food string}) error } 使用方式 创建结构体实现这个接口声明的方法,然后创建该结构体对象,调用方法 ......
接口 方法 golang

golang 使用redis设置分布式锁 demo

内容来自对 chatgpt 的咨询 分布式锁是在多个节点上运行的应用程序中协调工作的一种常用方法,而Redis是实现分布式锁的流行选择。以下是使用Go语言和github.com/go-redis/redis库来设置Redis分布式锁的一个简单示例: 首先,确保你已经安装了该库: go get -u ......
分布式 golang redis demo

golang 对字符串进行base64编解码、md5 编码

内容来自对 chagpt 的咨询 一、对字符串进行 base64 编解码 base64 编码 要在Go语言中对字符串进行base64编码,你可以使用标准库中的encoding/base64包。以下是一个简单的示例: package main import ( "encoding/base64" "f ......
字符串 字符 编码 golang base

golang 把内容写到 csv 文件或者 xlsx 文件里

内容来自对 chatgpt 的咨询 csv 格式 csv 格式的文件使用 wps 或者 office 打开后是一个 excel 表格的形式,很容易看到表格里的数据。csv 格式跟 markdown 格式有点像,只需要按照固定的语法放置文本,保存后,用对应的渲染软件打开,就能得到想要的效果。 比如下面 ......
文件 内容 golang xlsx csv

从一个golang 员工emp数组中,找到其中name相同的元素,把结果放到一个新数组里,代码实现

内容来自对 chatgpt 的咨询 为了找到具有相同名称的员工,并将结果放入一个新的数组中,我们可以首先使用一个映射(map)来存储每个名称及其出现的次数。然后,我们可以遍历原始数组并使用映射来判断是否有重复的名称。 以下是一个示例代码,演示如何实现这一目标: package main import ......
数组 元素 员工 代码 结果

golang: 仅声明但未初始化的切片可以执行 for range 和 append 操作;仅声明但未初始化的 map,可以执行 for range 操作,但是不能执行添加元素操作

仅声明但未初始化的切片可以执行 for range 和 append 操作 你可以对一个未初始化的切片进行append和for range操作。 一个未初始化的切片的零值是nil,且其长度和容量都为0。你可以安全地使用append函数向其添加元素: var aaa []int64 aaa = app ......
range for 元素 golang append

Docker - ERROR: failed to solve: golang:latest: error getting credentials - err: exec: "docker-credential-desktop": executable file not found in $PATH, out: ``

Dockerfile: FROM golang:latest WORKDIR /app ADD . . RUN go get RUN go build -o app . CMD ["/app/app"] zzh@ZZHPC:/zdata/MyPrograms/Go/aaa$ docker build ......

Golang函数或方法传递nil值的一个坑

package t13_niu_error import ( "bytes" "fmt" "io/ioutil" "net/http" "testing" ) // 将请求获取的数据转为string,支持GET或POST请求 func BaseRequestString(requestMethod, ......
函数 方法 Golang nil

最简单的方式实现 Golang的级别日志

lo.go package lo import ( "log" "os" ) const ( TRACE int = iota DEBUG INFO WARN ERROR FATAL ) type LevelLogger struct { level int logger *log.Logger } ......
级别 方式 Golang 日志

golang 实现 socks5 正向代理服务器

socks5proxy.go package main import ( "encoding/binary" "errors" "flag" "fmt" "io" "net" "strconv" ) var port int func main() { flag.IntVar(&port, "p", ......
服务器 golang socks5 socks

玩一玩 golang 1.21 的 pgo 编译优化

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 1.下载镜像 暂时不想替换本机的 golang 版本,于是打算在容器里编译: docker pull --platform=linux/amd64 golan ......
golang 1.21 pgo 21

GOLANG:调用delphi7编写的dll

0. delphi对winapi有很强的封装,使其更易用。 1. delphi声明dll内函数 需要尽量以此方式: procedure test(data: pchar; count: integer);stdcall; 2.golang 调用方法: str := []byte("abcdedf") ......
delphi7 GOLANG delphi dll

Golang 反射 && 单元测试

一.反射 1 package reflecttest 2 3 import ( 4 "fmt" 5 "reflect" 6 ) 7 8 // 语法:const [name] [type] = [value] 9 // const 只能修饰int\float\string\bool作为常量 10 co ......
amp 单元 Golang

golang fyne 添加系统托盘

环境:go fyne 要求:电脑右下方添加系统托盘,点击图标显示托盘菜单 效果: 实现: 1 package main 2 3 import ( 4 "fyne.io/fyne/v2" 5 "fyne.io/fyne/v2/app" 6 "fyne.io/fyne/v2/widget" 7 "fyn ......
托盘 golang 系统 fyne

golang fyne 自定义窗口、托盘图标 myApp.SetIcon(icon)

环境:go fyne 要求:更改窗口和托盘中的图标。如果添加了托盘托盘的图标也会更新 注意:更改图标的代码要在创建窗口和托盘的前面 效果: 文件位置: 实现: 1 package main 2 3 import ( 4 "fyne.io/fyne/v2" 5 "fyne.io/fyne/v2/app ......
托盘 图标 SetIcon golang myApp

golang fyne 创建两个窗口,窗口居中。点击按钮显示第二个窗口 myApp.NewWindow("new")

环境:go fyne 实现:在窗口的按钮中,点击按钮弹出第二窗口,并且窗口居中 注意:创建的第一个窗口和第二个窗口必须是通过同一个 myApp := app.New()创建出来的 效果: 实现: 1 package main 2 3 import ( 4 "fmt" 5 6 "fyne.io/fyn ......
quot NewWindow 按钮 两个 golang

golang-goroutine

常见的并发模型 1.多线程 每个线程一次处理一个请求,线程越多可并发处理的请求数就越多,但是在高并发下,多线程开销会比较大。 2.协程 无需抢占式的调度,开销小,可以有效的提高线程的并发性,从而避免了线程的缺点的部分,线程基础上的进一步抽象 3.基于异步回调的IO模型 说一个熟悉的,比如nginx使 ......
golang-goroutine goroutine golang