const go

go微服务开发:go-zero入门教程(三)

背景:开发中,免不了要对代码进行debug调试,go也不例外,使用go-zero框架时,该怎么对项目进行调试呢? 以user模块为例,找到service/user/api/user.go,这是user模块的入口,打开user.go可以看到main函数。 TRANSLATE with x Englis ......
入门教程 go-zero 教程 zero go

Go运算操作符全解与实战:编写更高效的代码!

本文全面探讨了Go语言中的各类运算操作符,从基础的数学和位运算到逻辑和特殊运算符。文章旨在深入解析每一种运算操作符的工作原理、应用场景和注意事项,以帮助开发者编写更高效、健壮和可读的Go代码。 简介 Go语言,作为一种现代的编程语言,不仅因为其简单易读的语法而受到欢迎,还因为它的性能和高度并发能力在 ......
操作符 实战 代码

顶层Const和底层Const

说的都是指针类型,只有指针有这种说法 顶层const: int * const p = a 表明指针本身的值(指向)是常量无法修改,也无法转化为int *类型。即便是const_cast试图去掉这样的顶层const属性也不可以。 底层const: int const * p = a. 表明指针指向的 ......
Const 顶层 底层

Go Maps

Maps用于以键值对的形式存储数据值。Maps中的每个元素都是一个键值对。Maps是一个无序且可更改的集合,不允许重复。Maps的长度是其元素的数量。您可以使用 len() 函数来查找长度。Maps的默认值是 nil。Maps保存对底层哈希表的引用。 Go语言有多种方法来创建Maps。 使用 var ......
Maps Go

Go类型全解:常量与变量大全!

本篇文章深入探讨了 Go 语言中类型确定值、类型不确定值以及对应类型转换的知识点,后续充分解析了常量与变量及其高级用法,并举出丰富的案例。 关注公众号【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕, ......
常量 变量 类型 大全

Go学习笔记4

十三、对象 9.挎包创建结构体实例 【1】创建不同的包: 【2】student.go: 【3】main.go: 发现:如果结构体首字母大写的话,在其它包下可以访问 但是:如果结构体的首字母小写? 解决:结构体首字母小写,跨包访问没问题: 》工厂模式 10.封装 【1】什么是封装: 封装(encaps ......
笔记

centOS安装配置go1.18环境

今天在centOS系统宝塔面板下创建Go项目,打算安装Go环境。 Gin、Gorm中的一些新语言特性似乎要求go1.18及以上,因此我安装并记录下了以下配置过程。 卸载原有旧版本(没有则不做) sudo rm -rf /usr/local/go 下载go对应版本二进制包 wget https://s ......
环境 centOS go1 18 go

Go - benchstat

zzh@ZZHPC:/zdata/MyPrograms/Go/aaa/Ch06/06_02$ go test -run NONE -bench . -count=5 -benchmem | tee cols.txtgoos: linuxgoarch: amd64pkg: zzh/aaa/Ch06/0 ......
benchstat Go

Go 中普通指针、unsafe.Pointer 与 uintptr 之间的关系和指针运算

C 语言指针运算 指针运算就是对指针类型的变量做常规数学运算,例如加减操作,实现地址的偏移。指针运算在 C 语言中是原生支持的,可以直接在指针变量上做加减,例如: #include <stdio.h> const int MAX = 3; int main () { int var[] = {10, ......
指针 之间 Pointer uintptr unsafe

Go 中几种常见的编程模式

模式可以理解成最佳实践,或者是约定俗成的规范或套路,熟悉一些常见模式可以方便理解项目代码。本文是参考 ......
常见 模式 Go

Go Module Package Workspace 参考笔记

这篇笔记整理记录了在阅读 go 官方文档中对于依赖管理、包引入、多模块开发时的工作区等相关内容。 module path module path 可以唯一标识一个 module,也是定位一个 module 下的 package 时的前缀。 module path 应该可以表明该 module 是做什 ......
Workspace Package 笔记 Module Go

Go 语言中闭包与defer

匿名函数: 没有函数名的函数就是匿名函数 匿名函数的定义格式如下: func(参数)(返回值){ 函数体 } 基本使用: func main() { // 将匿名函数保存到变量 add := func(x, y int) { fmt.Println(x + y) } add(10, 20) // 通 ......
闭包 语言 defer Go

PGO in Go 1.21

原文在这里。 由 Michael Pratt 发布于 2023年9月5日 在2023年早些时候,Go 1.20发布了供用户测试的概要版本的基于性能分析的优化(PGO)。经过解决预览版已知的限制,并得益于社区反馈和贡献的进一步改进,Go 1.21中的PGO支持已经准备好供一般生产使用!请查阅性能分析优 ......
1.21 PGO Go 21 in

Go - ERROR: # command-line-arguments undefined

zzh@ZZHPC:/zdata/MyPrograms/Go/aaa/Ch05/05_04$ go run httpd.go# command-line-arguments./httpd.go:15:9: undefined: DB./httpd.go:58:16: undefined: NewDB ......

Go Struct

结构体(简称struct)用于创建不同数据类型的成员集合,放入一个单一的变量中。虽然数组用于将相同数据类型的多个值存储在单一变量中,但结构体用于将不同数据类型的多个值存储在单一变量中。结构体对于将数据组合在一起以创建记录非常有用。 声明结构体 要在Go中声明一个结构体,请使用type和struct关 ......
Struct Go

Go每日一库之2:go-flags

## 简介 在[上一篇文章](https://go-quiz.github.io/2020/01/07/godailylib/flag/)中,我们介绍了`flag`库。`flag`库是用于解析命令行选项的。但是`flag`有几个缺点: - 不显示支持短选项。当然上一篇文章中也提到过可以通过将两个选项 ......
go-flags flags go

GO 每日一库之1:flag

## 缘起 我一直在想,有什么方式可以让人比较轻易地保持每日学习,持续输出的状态。写博客是一种方式,但不是每天都有想写的,值得写的东西。 有时候一个技术比较复杂,写博客的时候经常会写着写着发现自己的理解有偏差,或者细节还没有完全掌握,要去查资料,了解了之后又继续写,如此反复。 这样会导致一篇博客的耗 ......
flag GO

Python 中各个框架的性能对比(Flask,tornado,fastAPI)对比 Go 的gin框架

使用jmeter进行压测: 配置如下: Flask 框架: Python代码: from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!' if __n ......
框架 性能 tornado fastAPI Python

Go语言中如何实现NoCopy

Go语言中没有NoCopy关键字,但可以通过实现`sync.Locker`接口来禁止某个类型的变量被拷贝。 `sync.Locker`接口定义了`Lock()`和`Unlock()`方法,这两个方法用于保护共享数据的互斥访问。如果一个类型实现了`sync.Locker`接口,则该类型的变量不能被拷贝 ......
语言 NoCopy

go os.arges用法

package mainimport ( "fmt" "io" "net/http" "os")// init 在 main 函数之前调用func init() { if len(os.Args) != 2 { fmt.Println("Usage: ./example2 <url>") os.E ......
arges go os

Go学习笔记3

# 九、错误处理 ## 1.defer+recover机制处理异常错误 展示错误: 发现:程序中出现错误/恐慌以后,程序被中断,无法继续执行。 **错误处理/捕获机制:** 内置函数recover: ## 2.自定义错误 需要调用errors包下的New函数:函数返回error类型 ## 3.pan ......
笔记

Go语言反单引号创建原始字符串raw_string

在 Go 语言中,反引号(`)用于创建原始字符串字面量(raw string literals)。原始字符串字面量是不包含转义序列的字符串,其中的内容会保持原样,包括换行符和特殊字符。 反引号的主要用途之一是编写多行的文本或正则表达式,而不需要使用转义字符。这在处理包含大量特殊字符或格式化要求的文本 ......
引号 字符串 raw_string 字符 语言

2023-09-07:用go语言编写。塔子哥最近在处理一些字符串相关的任务 他喜欢 R 字符,因为在某些任务中,这个字符通常表示“正确”的结果 另一方面,他不喜欢 B 字符,因为在某些任务中,这个字符

2023-09-07:用go语言编写。塔子哥最近在处理一些字符串相关的任务 他喜欢 R 字符,因为在某些任务中,这个字符通常表示“正确”的结果 另一方面,他不喜欢 B 字符,因为在某些任务中,这个字符通常表示“错误”的结果 为了解决他的任务,塔子哥定义了字符串的权值为字符串中 R 字符的出现次数 例 ......
字符 任务 字符串 另一方面 语言

go101自定义泛型翻译——First Look of Custom Generics(上)

## 初识自定义泛型 1. 在自定义泛型的世界中。可能会与被定义成泛型类型的类型,泛型函数的函数。此外泛型类型也是会被定义成类型的,所有它们也可能会有相应的方法。 2. 关于泛型类型,泛型函数以及相应的方法的定义都会包含一种称为类型参数列表的部分,这是与普通方法函数以及方法最大的不同之处。 ### ......
Generics Custom First Look 101

Go 函数

函数是一组语句,可以在程序中重复使用。函数不会在页面加载时自动执行。函数将通过调用函数来执行。 ### 创建函数 要创建(通常称为声明)一个函数,请执行以下操作: - 使用 `func` 关键字。 - 指定函数的名称,后跟括号 `()`。 - 最后,在花括号 `{}` 内添加定义函数应执行的代码。 ......
函数 Go

go并发编程系列七:使用goroutine写一个线程池

TRANSLATE with x English Arabic Hebrew Polish Bulgarian Hindi Portuguese Catalan Hmong Daw Romanian Chinese Simplified Hungarian Russian Chinese Tradi ......
线程 goroutine

Go如何使用 Context 控制并发

Go如何使用 Context 控制并发 原创 萧瑟 golang面试经典讲解 2023-06-30 20:00 发表于上海 收录于合集 #go语言25个 #go25个 ##go工具23个 #面试54个 关于context的面试题还是比较多,发现context控制并发这块的面试最近出现的频率非常高,所 ......
Context

go-spew最强大的调试工具

go-spew golang最强大的调试助手,没有之一 2017-06-091758 举报版权 nkbai +关注 简介: go内置的fmt.sprintf已经很强大了,但是和spew比起来还是相形见绌,这里来一个例子. import ( "fmt" "github.com/davecgh/go-s ......
go-spew 工具 spew go

Go语言中互斥锁的最佳实践

使用互斥锁是确保多个goroutine之间共享数据安全访问的一种常见方式。以下是互斥锁的最佳实践: 1. **仅在必要时使用互斥锁**:互斥锁的目的是保护共享资源,但不是所有变量都需要被互斥锁保护。只有在多个goroutine并发访问的数据结构或变量上使用互斥锁,以避免不必要的锁定。 2. **小范 ......
语言

使用GO 程序指定IP地址访问 http/https 地址 类似curl --resolve XXXIP:PortYYY

需求,使用GO 程序指定IP地址访问 http/https 地址 传入参数: ipAddr // ipv4地址 string值serviceUrl // url地址 string值hostContainPort // Host Header 是否带url的端口 bool值 返回值: response ......
地址 PortYYY resolve 程序 XXXIP