随笔分类 -  go

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
摘要:前言 The selected directory is not a valid home for Go SDK 出现这个错误的原因是 idea 的 Go-plugin 插件,和 Go 的sdk版本不匹配; 解决方法 在 golang 安装路径下寻找:go1.18.3\src\runtime\int 阅读全文
posted @ 2022-06-06 16:05 牛奔 阅读(1625) 评论(0) 推荐(0) 编辑
摘要:前言 我们可能经常会遇到这样一个问题:一个 Go 项目中有数十个 Go 包,每个包中又有若干常量、变量、各种函数和方法,那 Go 代码究竟是从哪里开始执行的呢?后续的执行顺序又是什么样的呢? 事实上,了解这门语言编写应用的执行次序,对我们写出结构合理、逻辑清晰的程序大有裨益,无论你用的是归属为哪种编 阅读全文
posted @ 2022-04-23 18:13 牛奔 阅读(758) 评论(0) 推荐(0) 编辑
摘要:前言 通过学习Go是怎么解决包依赖管理问题的?、go module基本使用,我们掌握了 Go Module 构建模式的基本概念和工作原理,也初步学会了如何通过 go mod 命令,将一个 Go 项目转变为一个 Go Module,并通过 Go Module 构建模式进行构建。 但是,围绕一个 Go 阅读全文
posted @ 2022-04-23 17:22 牛奔 阅读(584) 评论(0) 推荐(0) 编辑
摘要:我们先来了解一下 Go 构建模式的演化过程,弄清楚 Go 核心开发团队为什么要引入 Go module 构建模式。 Go 构建模式时怎么演化的? Go 程序由 Go 包组合而成的,Go 程序的构建过程就是确定包版本、编译包以及将编译后得到的目标文件链接在一起的过程。 Go 语言的构建模式历经了三个迭 阅读全文
posted @ 2022-04-23 16:27 牛奔 阅读(2950) 评论(0) 推荐(2) 编辑
摘要:前言 设计哲学之于编程语言,就好比一个人的价值观之于这个人的行为。 因为如果你不认同一个人的价值观,那你其实很难与之持续交往下去,即所谓道不同不相为谋。类似的,如果你不认同一门编程语言的设计哲学,那么大概率你在后续的语言学习中,就会遇到上面提到的这些问题,而且可能会让你失去继续学习的精神动力。 简单 阅读全文
posted @ 2022-04-21 02:09 牛奔 阅读(738) 评论(0) 推荐(1) 编辑
摘要:前言 有时候我们需要处理一份数据,需要多个字段作为条件,联合进行排序。 代码 package main import ( "fmt" "sort" ) // 数据类型 type Change struct { user string language string lines int } // so 阅读全文
posted @ 2022-04-15 22:30 牛奔 阅读(322) 评论(0) 推荐(0) 编辑
摘要:前言 文件 I/O,特别是对文件的读写是编程语言中重要的功能。通常,我们需要逐行读取文件。 GO 提供了 bufio 软件包,实现了有缓冲的 I/O。它包装一个 io.Reader 或 io.Writer 接口对象,创建另一个也实现了该接口,且同时还提供了缓冲和一些文本 I/O 的帮助函数的对象。 阅读全文
posted @ 2021-12-15 12:01 牛奔 阅读(625) 评论(0) 推荐(0) 编辑
摘要:前言 Go 语言自带的 encode/json 包提供了对 JSON 数据格式的编码和解码能力。 解析 JSON 的关键,其实在于如何声明存放解析后数据的变量的类型。 此外使用 json 编码还会有几个需要注意的地方,谨防踩坑。 解析简单JSON 先观察下这段 JSON 数据的组成,name,cre 阅读全文
posted @ 2021-12-09 11:05 牛奔 阅读(1198) 评论(0) 推荐(0) 编辑
摘要:前言 在循环中,有几种情况可能会导致混乱,需要弄清楚。 循环迭代器变量中使用引用 出于效率考虑,我们经常使用单个变量来循环迭代器。但在循环中,每次循环迭代中都会有不同的值,有时候会导致未知的行为。 in := []int{1, 2, 3} var out []*int for _, v := ran 阅读全文
posted @ 2021-12-07 09:30 牛奔 阅读(75) 评论(0) 推荐(0) 编辑
摘要:前言 一份清晰明了的接口文档能够极大地提高前后端双方的沟通效率和开发效率。 本文将介绍如何使用swagger生成接口文档。 swagger介绍 Swagger本质上是一种用于描述使用JSON表示的RESTful API的接口描述语言。Swagger与一组开源软件工具一起使用,以设计、构建、记录和使用 阅读全文
posted @ 2021-12-02 17:01 牛奔 阅读(5404) 评论(0) 推荐(0) 编辑
摘要:介绍 go generate 命令是go 1.4版本里面新添加的一个命令,当运行 go generate 时,它将扫描与当前包相关的源代码文件,找出所有包含 //go:generate 的特殊注释,提取并执行该特殊注释后面的命令,命令为可执行程序,形同shell下面执行。 有几点需要注意: 该特殊注 阅读全文
posted @ 2021-11-19 17:12 牛奔 阅读(364) 评论(0) 推荐(0) 编辑
摘要:直接设置跨域参数 新建 cors 文件 package cors import ( "time" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" ) func Cors() gin.HandlerFunc { c := cors.Co 阅读全文
posted @ 2021-11-18 14:27 牛奔 阅读(1458) 评论(3) 推荐(0) 编辑
摘要:iota 特殊常量 在go语言中iota比较特殊,是一个被编译器修改的常量,在每一个const关键字出现时被重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字就会自动加1 package main import "fmt" func main() { // 1.iota常量 阅读全文
posted @ 2021-11-18 14:03 牛奔 阅读(455) 评论(0) 推荐(0) 编辑
摘要:gin Http请求Body和Header的获取 request post form Query header 请求参数 POST /post?id=1234&page=1 HTTP/1.1 Content-Type: application/x-www-form-urlencoded test: 阅读全文
posted @ 2021-11-18 11:28 牛奔 阅读(331) 评论(0) 推荐(0) 编辑
摘要:前言 在 proto 文件夹下执行如下命令: $ protoc --go_out=plugins=grpc:. *.proto 报错:无法确定Go导入路径 protoc-gen-go: unable to determine Go import path for "search.proto" Ple 阅读全文
posted @ 2021-10-13 12:03 牛奔 阅读(1286) 评论(0) 推荐(0) 编辑
摘要:goto 语句介绍 在 Go 语言中,可以通过goto语句跳转到标签,进行代码间的无条件跳转。另外,goto语句在快速跳出循环、避免重复退出方面可以简化代码实现过程,但在结构化程序设计中一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试程序都产生困难。 语法 goto label; . 阅读全文
posted @ 2021-09-14 16:17 牛奔 阅读(556) 评论(0) 推荐(0) 编辑
摘要:DES DES(Data Encryption)是1977年美国联邦信息处理标准(FIPS)中所采用的一种对称密码(FIPS46-3),一直以来被美国及其他国家的政府和银行等广泛使用。随着计算机的进步,DES已经能够被暴力破解,1997年的DES Challenge I 中用了96天破译密钥,199 阅读全文
posted @ 2021-08-30 22:38 牛奔 阅读(1070) 评论(0) 推荐(0) 编辑
摘要:举例 现在需要判断命令行是否传了参数,即 os.Args[1] 是否存在 如果使用下述的判断: func main() { fmt.Println(os.Args[1]) } 会报错:index out of range panic: runtime error: index out of rang 阅读全文
posted @ 2021-08-18 14:02 牛奔 阅读(447) 评论(0) 推荐(0) 编辑
摘要:前言 平时在 Go 工程的开发中,几乎所有服务端的默认实现(例如:HTTP Server),都在处理请求时开启了新的 goroutine 进行处理。 但从一开始就存在一个问题,那就是当一个请求被取消或超时时,所有在该请求上工作的 goroutine 应该迅速退出,以便系统可以回收他们正在使用的资源。 阅读全文
posted @ 2021-08-11 22:03 牛奔 阅读(1077) 评论(0) 推荐(0) 编辑
摘要:前言 Golang 官方提供的扩展库里就自带了限流算法的实现,即 golang.org/x/time/rate。该限流器也是基于 Token Bucket(令牌桶) 实现的。 限流器的内部结构 time/rate 包的 Limiter 类型对限流器进行了定义,所有限流功能都是通过基于 Limiter 阅读全文
posted @ 2021-08-01 23:39 牛奔 阅读(269) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示