Go
文章平均质量分 70
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早
肥叔菌
本博客主要用于记录学习过程中的笔记,每隔一段时间,博主将会将精华内容整合发到知乎、简书上。欢迎关注博主肥叔菌在其他平台上的账号,谢谢。
B站:https://space.bilibili.com/456254145
segmentfault:https://segmentfault.com/u/feishujun/articles
简书:https://www.jianshu.com/u/67bab078551a
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
go mod出现zip: not a valid zip file的解决办法
go mod一个项目的时候发现有一个包总是下载不了,终端报如下错误问题原因:go mod代理服务器下载出错;下载文件时网络不稳定导致下载的文件不能用(最有可能)解决办法:原创 2022-07-10 00:00:00 · 7739 阅读 · 0 评论 -
goimports 安装和使用
1.下载goimports在goland中在任意一个项目的终端执行(gopath下的项目): 2.安装goimports返回到goland的终端输入: 然后我们可以在 GOPATH/bin 目录下看到 goimports 文件 (win是goimports.exe)3.然后我们将该文件复制到GOROOT目录下的bin目录里4.接着在goland的setting中添加goimports就可以了...原创 2022-07-12 00:00:00 · 5037 阅读 · 0 评论 -
Go语言中定时器的使用
GO语言在time包中提供了三种定时器的使用方式:1.第一种:ticker通过 time.NewTicker() 创建,这种类型,ticker会不断的按照设定的间隔时间触发,除非主动终止运行。2.第二种:timer通过 time.NewTimer() 创建,这种类型,timer只会执行一次,当然,可以在执行完以后通过调用 timer.Reset() 让定时器再次工作,并可以更改时间间隔。3.第三种:After()从代码可以看到,After()其实是Timer的一个语法糖。下面通过代码演示一下三种原创 2022-07-08 00:00:00 · 1093 阅读 · 0 评论 -
Golang net.http IPv4/IPv6 服务
Golang 的网络服务,如果不指定IPv4 或 IPv6,如果VPS 同时支持 IPv4 和 IPv6,net.Listen() 只会监听 IPv6 地址。但这不影响客户端使用 IPv4 地址来访问。如下使用 netstat -lnt 来查看端口监听情况:如何在启动网络服务时选择 IPv6?在高层可以使用 http.ListenAndServe 来选择,如:如果觉得具体指定 IPv6地址太麻烦,可以重构 ListenAndServe 函数,会用到 net.Listen 函数, 可以在该函数里指定 n原创 2022-06-26 11:25:06 · 2734 阅读 · 0 评论 -
vps_key_secret整体执行流程
"InsertVps":"INSERT INTO vps_key_secret (akey, secret, platform, max, createtime,hash_id) VALUES (?,?,?,?,?,?)"列名变量列类型akey v1[0] 长度为20字符类型 CHAR(20)secret v1[1] 长度为40字符类型 CHAR(40)platform WSQuery.Value[“platform”] String类型 TEXTm原创 2022-05-24 18:00:00 · 310 阅读 · 0 评论 -
Go语言 soheilhy/cmux 网络端口复用服务
同一个端口可以进行不同的操作还是很有用的,比如一个端口同时提供ssh,http,rpc 服务。soheilhy/cmux 是一个不错的选择,以下是一个简单的试用,代码来自官方文档package mainimport ( "context" "fmt" "io" "log" "net" "net/http" "net/rpc" "strings" "github.com/soheilhy/cmux" "golang.org原创 2021-12-20 23:16:10 · 1439 阅读 · 0 评论 -
Go语言使用net/http包编写Web 服务器
func main() { http.HandleFunc("/", sayhelloName) // 设置访问的路由 err := http.ListenAndServe(":9090", nil) // 设置监听的端口 if err != nil { log.Fatal("ListenAndServe: ", err) }}上面这个代码,我们 build 之后,然后执行 web.exe, 这个时候其实已经在 9090 端口监听 http 链接请求了。原创 2021-12-20 21:56:22 · 878 阅读 · 0 评论 -
Go语言net/http包使用详细介绍
Go的http有两个核心功能:Conn、ServeMux(多路复用器)Go 提供了一系列用于创建 Web 服务器的标准库,而且通过 Go 创建一个服务器的 步骤非常简单,只要通过 net/http 包调用 ListenAndServe 函数并传入网络地址以及负责处理请求的处理器( handler )作为参数就可以了。如果网络地址参数为空字符串,那 么服务器默认使用 80 端口进行网络连接;如果处理器参数为 nil,那么服务器将使用默认的多路复用器 DefaultServeMux。Conn的goroutin转载 2021-12-20 12:56:59 · 3599 阅读 · 0 评论 -
Golang入门之——Go 协程
Go 协程是什么?Go 协程是与其他函数或方法一起并发运行的函数或方法。Go 协程可以看作是轻量级线程。与线程相比,创建一个 Go 协程的成本很小。因此在 Go 应用中,常常会看到有数以千计的 Go 协程并发地运行。Go 协程相比于线程的优势相比线程而言,Go 协程的成本极低。堆栈大小只有若干 kb,并且可以根据应用的需求进行增减。而线程必须指定堆栈的大小,其堆栈是固定不变的。Go 协程会复用(Multiplex)数量更少的 OS 线程。即使程序有数以千计的 Go 协程,也可能只有一个线程。如果该线转载 2021-10-29 12:49:55 · 950 阅读 · 0 评论 -
Golang入门之——并发入门
Go 是并发式语言,而不是并行式语言。在讨论 Go 如何处理并发之前,我们必须理解何为并发,以及并发与并行的区别。并发是什么?并发是指立即处理多个任务的能力。一个例子就能很好地说明这一点。我们可以想象一个人正在跑步。假如在他晨跑时,鞋带突然松了。于是他停下来,系一下鞋带,接下来继续跑。这个例子就是典型的并发。这个人能够一下搞定跑步和系鞋带两件事,即立即处理多个任务。并行是什么?并行和并发有何区别?并行是指同时处理多个任务。这听起来和并发差不多,但其实完全不同。我们同样用这个跑步的例子来帮助理解。转载 2021-10-29 12:25:21 · 172 阅读 · 0 评论 -
Golang入门之——sync.Pool
Go sync.Poolgolang的对象池sync.pool源码解读深入Golang之sync.Pool详解go语言的官方包sync.Pool的实现原理和适用场景golang中神奇的sync.Poolgolang sync.Pool 分析原创 2021-10-26 23:26:28 · 530 阅读 · 0 评论 -
Golang入门之——文件锁操作flock
有时候,我们使用go语言开发一些程序的时候,往往出现多个进程同时操作同一份文件的情况,这很容易导致文件中的数据混乱。 我们需要采用一些手段来平衡这些冲突:需要锁操作来保证数据的完整性,这里介绍的针对文件的锁,称之为“文件锁”-flock。对于flock,我们最常见的例子就是nginx,进程起来后就会把当前的PID写入这个文件,当然如果这个文件已经存在了,也就是前一个进程还没有退出,那么Nginx就不会重新启动。flock 是对于整个文件的建议性锁。也就是说,如果一个进程在一个文件(inode)上放了锁,原创 2021-10-26 23:20:49 · 3258 阅读 · 1 评论 -
Golang入门之——方法
什么是方法?方法其实就是一个函数,在 func 这个关键字和方法名中间加入了一个特殊的接收器类型。接收器可以是结构体类型或者是非结构体类型。接收器是可以在方法的内部访问的。下面就是创建一个方法的语法。func (t Type) methodName(parameter list) {}上面的代码片段创建了一个接收器类型为 Type 的方法 methodName。方法示例让我们来编写一个简单的小程序,它会在结构体类型上创建一个方法并调用它。package mainimport (转载 2021-10-26 23:13:29 · 382 阅读 · 0 评论 -
Golang入门之——结构体
什么是结构体?结构体是用户定义的类型,表示若干个字段(Field)的集合。有时应该把数据整合在一起,而不是让这些数据没有联系。这种情况下可以使用结构体。例如,一个职员有 firstName、lastName 和 age 三个属性,而把这些属性组合在一个结构体 employee 中就很合理。结构体的声明type Employee struct { firstName string lastName string age int}在上面的代码片段里,声明了一个转载 2021-10-26 12:50:32 · 646 阅读 · 0 评论 -
Golang入门之——字符串
由于和其他语言相比,字符串在 Go 语言中有着自己特殊的实现,因此在这里需要被特别提出来。什么是字符串?Go 语言中的字符串是一个字节切片。把内容放在双引号""之间,我们可以创建一个字符串。让我们来看一个创建并打印字符串的简单示例。package mainimport ( "fmt")func main() { name := "Hello World" fmt.Println(name)}上面的程序将会输出 Hello World。Go 中的字符串是兼容 Uni转载 2021-10-25 12:42:18 · 461 阅读 · 0 评论 -
Golang入门之——类型
下面是 Go 支持的基本类型:bool数字类型int8, int16, int32, int64, intuint8, uint16, uint32, uint64, uintfloat32, float64complex64, complex128byterunestringboolbool 类型表示一个布尔值,值为 true 或者 false。package mainimport "fmt"func main() { a := true b := fa转载 2021-04-09 12:40:32 · 898 阅读 · 0 评论 -
Golang入门之——变量
声明单个变量var name type 是声明单个变量的语法。package mainimport "fmt"func main() { var age int // 变量声明 fmt.Println("my age is", age)}语句 var age int 声明了一个 int 类型的变量,名字为 age。我们还没有给该变量赋值。如果变量未被赋值,Go 会自动地将其初始化,赋值该变量类型的零值(Zero Value)。本例中 age 就被赋值为 0。如果你运行该程序,你原创 2021-04-08 23:04:43 · 574 阅读 · 0 评论 -
Golang入门之——Hello World
学习一种编程语言的最好方法就是去动手实践,编写代码。让我们开始编写第一个 Go 程序吧。我个人推荐使用安装了 Go 扩展的 Visual Studio Code 作为 IDE。它具有自动补全、编码规范(Code Styling)以及许多其他的特性。建立 Go 工作区在编写代码之前,我们首先应该建立 Go 的工作区(Workspace)。在 Mac 或 Linux 操作系统下,Go 工作区应该设置在 $HOME/go。所以我们要在 $HOME 目录下创建 go 目录。而在 Windows 下,工作区应原创 2021-04-08 22:48:23 · 1664 阅读 · 0 评论 -
Golang入门之——介绍与安装
Golang 是什么Go 亦称为 Golang(译注:按照 Rob Pike 说法,语言叫做 Go,Golang 只是官方网站的网址),是由谷歌开发的一个开源的编译型的静态语言。Golang 的主要关注点是使得高可用性和可扩展性的 Web 应用的开发变得简便容易。(译注:Go 的定位是系统编程语言,只是对 Web 开发支持较好)为何选择 Golang既然有很多其他编程语言可以做同样的工作,如 Python,Ruby,Nodejs 等,为什么要选择 Golang 作为服务端编程语言?以下是我使用 Go原创 2021-04-08 22:25:09 · 1762 阅读 · 2 评论 -
Golang入门之——cobra包
Cobra 是一个 Golang 包,它提供了简单的接口来创建命令行程序。同时,Cobra 也是一个应用程序,用来生成应用框架,从而开发以 Cobra 为基础的应用。本文的演示环境为 ubuntu 18.04(下图来自互联网)。cobra 的主要功能如下,可以说每一项都很实用:简易的子命令行模式,如 app server, app fetch 等等完全兼容 posix 命令行模式嵌套子命令 subcommand支持全局,局部,串联 flags使用 cobra 很容易的生成应用程序和命令,使用转载 2021-01-13 21:59:43 · 6697 阅读 · 0 评论
分享