const go
像python操作attr一样在go里用reflect 操作field (标题与内容弱相关)
用go快两年了,其实是基本没怎么用过反射。主要是感觉对上层的使用来说没啥用。 之前模仿python的getattr和setattr简单写过GetField和SetField,写完简单测了一下就丢一边了也没大量用(因为没有需求啊) func SetField(obj any, attr string, ......
(转)Go init函数详解
原文:https://blog.csdn.net/benben_2015/article/details/79486077 Go init函数详解init()函数会在每个包完成初始化后自动执行,并且执行优先级比main函数高。init 函数通常被用来: 对变量进行初始化检查/修复程序的状态注册运行一 ......
mutable、const、volatile关键字
C++中有三种修饰数据可变的关键字:mutable、const、volatile。 const const我们很常见,在定义一些不可变的常量或不修改数据内容的函数时经常会用到。 修饰变量,说明该变量不可以被改变; 修饰指针,分为指向常量的指针(例如const char*,其自身可变,指向的是常量字符 ......
【入门】Go语言排序算法详解
1、冒泡排序 冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻的两个元素,并在必要时交换它们的位置,直到没有任何一对元素需要交换为止。该算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 package main import "fmt" // 我们定义了一个名为`bu ......
go实现一个简单切片迭代器
package main import "fmt" type iterator struct { data []int index int // 索引 } // 通过简单工厂函数构造一个实例对象 func newIterator(data []int) *iterator { return &ite ......
Go语言入门(go环境配置,变量和常量)
go语言特点 天然支持高并发 语法简单,去掉很多臃肿的东西 优化的内存分配和垃圾处理 完善的标准库 go安装 下载:Go下载 - Go语言中文网 - Golang中文社区 (studygolang.com) go version判断是否安装成功 配置环境变量GOROOT ,GOPATH go env ......
Go语言规范汇总
统一规范篇 合理规划目录 本篇主要描述了公司内部同事都必须遵守的一些开发规矩,如统一开发空间,既使用统一的开发工具来保证代码最后的格式的统一,开发中对文件和代码长度的控制,必须经过go语言自带的检测机制等。 【原则1.1】合理规划目录,一个目录中只包含一个包(实现一个模块的功能),如果模块功能复杂考 ......
go 指针
前言: 变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置,当一个指针被定义后没有分配到任何变量时,它的默认值为 nil。 Go语言中使用在变量名前面添加&操作符(前缀)来获取变量的内存地址。 指针变量通常缩写为 ptr。 正文: 通过指针,获取变量的值 num := 5 ptr := &n ......
go map
前言: map类型是一个hash表,由键和值组成 正文: map声明格式: var mapname map[keytype] valuetype mapname 为map的变量名 keytype 为键类型 valuetype 是键对应的值类型 未初始化的map的值是nil map创建实例: 方式1: ......
go 切片
前言: 切片的底层是数组,是对数组一个连续片段的引用。 切片和数组的不同在于定义时:数组[]中有值,切片[]中无值 由于数组的长度不可改变,所以Go提供了一种灵活,功能强悍的内置类型切片(“动态数组”)。 切片是一个有三个字段的数据结构,这 3 个字段分别是容量(capacity)、长度(lengt ......
Go 连接数据库的增删改查
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) var db *sql.DB func initDB() (err error) { dsn := "root:123456@tcp(127 ......
开心档之Go 错误处理
Go 错误处理 Go 语言通过内置的错误接口提供了非常简单的错误处理机制。 error类型是一个接口类型,这是它的定义: type error interface { Error() string } 我们可以在编码中通过实现 error 接口类型来生成错误信息。 函数通常在最后的返回值中返回错误信 ......
开心档之Go 语言环境安装
Go 语言环境安装 Go 语言支持以下系统: Linux FreeBSD Mac OS X(也称为 Darwin) Windows 安装包下载地址为:https://golang.org/dl/。 如果打不开可以使用这个地址:https://golang.google.cn/dl/。 各个系统对应的 ......
Go 语言:通过TDD驱动开发创建一个 Web 服务器,用户可以在其中跟踪玩家赢了多少场游戏。
你被要求创建一个 Web 服务器,用户可以在其中跟踪玩家赢了多少场游戏。 GET /players/{name} 应该返回一个表示获胜总数的数字 POST /players/{name} 应该为玩家赢得游戏记录一次得分,并随着每次 POST 递增 我们将遵循 TDD 方法,尽可能快地让程序先可用,然 ......
基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 1/3
基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 1/3 基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 2/3 基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 3/3 项目地址:https://gi ......
基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 2/3
基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 1/3 基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 2/3 基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 3/3 项目地址:https://gi ......
基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 3/3
基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 1/3 基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 2/3 基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 3/3 项目地址:https://gi ......
go语言基础
1.常量,变量,指针定义 package main import "fmt" const s = 2 const ( Unknown = 0 Female = 1 Male = 2 ) var n = 3 func main() { a, b, c := 1, 2, "str1" a, b = b, ......
go 数组
前言: go中数组的使用, 数组是一个由固定长度的特定类型元素组成的序列, 一个数组可以由零个或多个元素组成, 存放多个同一类型的数据,是一种复杂数据类型 正文: 定义数组语法: var 数组变量名 [元素数量]Type = [元素数量]Type {} 元素数量是常量 一旦定义不能改变 定义方式如下 ......
go流程控制语句
前言: go中if else,switch, for ,go的使用 正文: ifelse 流程控制 语法: if 表达式 { //code1 }else if 表达式{ //code2 }else{ //code3 } if条件判断语句中不需要括号 代码示例1: if else isLogin := ......
go常量
前言: Go语言中的常量使用关键字 const 定义,用于存储不会改变的数据, 常量是在编译时被创建的,即使定义在函数内部也是如此 并且只能是布尔型、数字型(整数型、浮点型和复数)和字符串型 正文: 常量的定义 : const name [type] = value 常量规则: 1、常量定义后,可以 ......
go web 框架
在 Go语言开发的 Web 框架中,有两款著名 Web 框架分别是 Martini 和 Gin,两款 Web 框架相比较的话,Gin 自己说它比 Martini 要强很多。Gin 是 Go语言写的一个 web 框架,它具有运行速度快,分组的路由器,良好的崩溃捕获和错误处理,非常好的支持中间件和 js ......
【入门】Go语言Map集合详解
一、Map集合介绍 1.1 什么是Map集合? map集合是一种无序的键值对的集合 map是通过key来快速检索数据,key类似于索引,指向数据的值 在获取 Map 的值时,如果键不存在,返回该类型的零值,例如 int 类型的零值是 0,string 类型的零值是 "" Map 是引用类型,如果将一 ......
【命令设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
简介 命令模式(Command Pattern)是一种数据驱动的设计模式,也是一种行为型设计模式。这种模式的请求以命令的形式包裹在对象中,并传给调用对象。调用对象再寻找合适的对象,并把该命令传给相应的处理者。即把请求或操作封装成单个对象,并使其可以被参数化和延迟执行,这种方式将命令和执行者进行了有效 ......
go生成唯一的随机数
需求在并发下生成不同的随机数,使用match/rand下的不满足需要 package main import ( "crypto/rand" "fmt" "math/big" "strconv" "sync" "time" ) func main() { wg := sync.WaitGroup{} ......
NSQ TCP协议规范-protocol_v2.go
通过本文你将学到: nsq中TCP协议是怎么处理的? nsq是怎么应对升级版本的(通过增加商量协议号,使升级比较方便) nsq使用的网络字节序是什么形式的? TCP通信中为啥要处理粘包?怎么处理粘包?NSQ中又是怎么处理粘包的?http是怎么处理粘包的?若传输的是UDP是否会出现粘包的现象? 一、协 ......
用go实现get/post请求调用api
注册登录 首页 专栏 后端 文章详情 用go实现get/post请求调用api Heroine 1 发布于 2022-09-01 上海 最近的一次demo,相当于一次复习吧,把踩的坑都记录一遍 先复习一下调用接口的过程 需要url 是get方法,还是post方法? url需要加参数吗? 序列化? 1 ......
(转)为什么 Go 有两种声明变量的方式,有什么区别,哪种好?
原文:https://blog.csdn.net/EDDYCJY/article/details/122465567 大家好,我是煎鱼。 有一位读者刚入门 Go ,提了一个很有意思的问题:Go 有几种声明变量的方式,作为初学者,到底用哪种,有什么区别,又为什么要有多种声明方式呢? 为此,煎鱼将和大家 ......