随笔分类 - golang
摘要:😋我是平也,这有一个专注Gopher技术成长的开源项目 "「go home」" 导读 相信很多人都听说过Go语言天然支持高并发,原因是内部有协程(goroutine)加持,可以在一个进程中启动成千上万个协程。那么,它凭什么做到如此高的并发呢?那就需要先了解什么是并发模型。 并发模型 著名的C++专
阅读全文
摘要:我是平也,这有一个专注Gopher技术与成长的开源项目 "「go home」" 导读 学习Go语言源码的第一步就是了解先了解它的目录结构,你对它的源码目录了解多少呢? 目录总览 AUTHORS:Golang官方作者清单 CONTRIBUTING.md:加入贡献者队列的指导文件 CONTRIBUTOR
阅读全文
摘要:开源库 "「go home」" 聚焦Go语言技术栈与面试题,以协助Gopher登上更大的舞台,欢迎 ~ 背景介绍 大家都知道进程是操作系统资源分配的基本单位,有独立的内存空间,线程可以共享同一个进程的内存空间,所以线程相对轻量,上下文切换开销也小。虽然线程已经比较轻量了,但还是占近1M的内存,而今天
阅读全文
摘要:导读 在第二节,我们学习了Gin框架的路由定义与参数接收,今天应一位同学的要求,来讲解一下参数的绑定与校验。 为什么校验参数? 本不必抛出这个问题的,但顾及到初出茅庐的同学,这里解释一下。 假设做一个注册接口,传过来的用户名是不是不能太骚气?比如一堆空格和符号之类的;密码是不是不能太长也不能太短?手
阅读全文
摘要:什么是中间件 中间件,英译middleware,顾名思义,放在中间的物件,那么放在谁中间呢?本来,客户端可以直接请求到服务端接口。 现在,中间件横插一脚,它能在请求到达接口之前拦截请求,做一些特殊处理,比如日志记录,故障处理等。这就是今天要讲述的中间件,那么,它在Gin框架中是怎么使用的呢? 如何使
阅读全文
摘要:背景 go micro给我们提供了一个非常便捷的方式来快速搭建微服务,而且并不需要提前系统了解micro,下面用一个简单的示例来快速实现一个服务。 创建Proto文件 因为我们要做微服务,那么就一定有服务端和客户端,这两个端通过什么格式进行内容传输,就涉及到了序列化,比较主流的序列化协议就是JSON
阅读全文
摘要:作用 主要用来实现命令行的参数解析,以达到实现以下效果的目的 使用方式 flag是Go语言的内置包,能接收的参数类型主要有字符串、布尔和数值类型。 方式一 我们在main函数中调用 函数来定义命令,该函数共有三个参数 第一个参数是命令名称 第二个参数为默认值,也就是不传ip时默认拿到的值 第三个参数
阅读全文
摘要:背景 项目交叉编译为可执行文件之后,在其他目录执行文件时提示找不到配置文件 解决方案 直接采用以下代码获取到实际执行文件的路径,然后拼接配置文件即可 代码分析 os.Args是用来获取命令行执行参数分片的,当使用 时 分片0会是一串复杂的路径,原因是直接run go文件时会将文件转移到临时路径下,然
阅读全文
摘要:代码示例全部保存在,欢迎star:https://github.com/EnochZg/golang examples 安装组件 使用 先创建ini后缀的配置文件,本文以config.ini为例 在main函数中加入以下代码读取username配置 运行后即可读取到username的值,上文中的Se
阅读全文
摘要:创建锁文件 变量值自定义;在main函数执行完成后需要移除锁文件并关闭文件读取。 锁定文件 排它锁,不允许其他人读和写。 意味着无法锁定文件时不能阻断操作,马上返回给进程。 返回文件描述符,文件描述符是一个索引值,指向当前进程打开的文件记录表。最后在执行完毕后对文件解锁。
阅读全文
摘要:映射的定义 初识映射会很懵,因为在PHP中没有映射类型的定义。其实没那么复杂,任何复杂的类型在PHP中都可以用数组表示,映射也不例外。 映射其实就是有key有value的数组,在Go中的赋值也很类似,但需要提前声明该映射类型的键与值的类型,确保所有的键和值的赋值类型统一,否则会报错。 在PHP中还有
阅读全文
摘要:基本介绍 交叉编译是为了在不同平台编译出其他平台的程序,比如在Linux编译出Windows程序,在Windows能编译出Linux程序,32位系统下编译出64位程序,今天介绍的gox就是其中一款交叉编译工具。 配置环境 首先配置好Go语言的环境变量,并在 中设置,简单说明一下为什么要添加至该文件,
阅读全文
摘要:数组的定义 用过PHP的同学应该很清楚,无论多么复杂的数据格式都可以用数组来表达,什么类型的数据都可以往里塞,它是工作必备的一部分,使用很简单,易用程度简直变态。 在Go语言中就有所不同了,数组是一段固定长度的连续内存区域,与C语言概念完全一致,在声明数组时,要先确定数组的长度,而且数组中的元素只能
阅读全文
摘要:字符串的赋值 在PHP中,字符串的赋值虽然只有一行,其实包含了两步,一是声明变量,二是赋值给变量,同一个变量可以任意重新赋值。 Go语言实现上述两步也可以用一行语句解决,就是通过标识 赋值时同时声明变量,切记等号右侧的字符串不能用单引号,对变量的后续赋值也不能再重新声明,否则会报错。除此之外,定义的
阅读全文
