golang 中的 regexp 包

正则语法 google/re2 Printf 语法 几个函数方法 名称 说明 备注 Match 验证正则表达式是否匹配 []byte - MatchString 验证正则表达式是否匹配 string - FindAllString Regexp的方法,匹配字符串,返回匹配结果组成一个 []string。限定参数 -1表示不限定,其它表示限定。 - FindAllStringSubmatch Regexp的方法,返回一个 [][]string - 示例 MatchString func Match...阅读全文

2017-07-09 14:03:51 中柠檬
阅读:5582 评论:0

Golang的反射reflect深入理解和示例

[TOC] Golang的反射reflect深入理解和示例 【记录于2018年2月】 编程语言中反射的概念 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 每种语言的反射模型都不同,并且有些语言根本不支持反射。Golang语言实现了反射,反射机制就是在运行时动态的调用对象的方法和...阅读全文

阅读:70479 评论:12

《Golang 入门系列三》golang的运算符

前言:运算符优先级,是描述在计算机运算计算表达式时执行运算的先后顺序。 先执行具有较高优先级的运算,然后执行较低优先级的运算。 一、算数运算符 下表列出了所有Go语言的算术运算符。假定 A 值为 10,B 值为 20。 运算符 描述 实例 + 相加 A + B 输出结果 30 - 相减 A - B 输出结果 -10 * 相乘 A * B 输出结果 200 / 相除 B / A 输出结果 2 % 求余 B % A 输出结果 0 ++ 自增 A++ 输出结果 11 -- 自减 A-- 输出结果 9 ...阅读全文

2018-02-28 01:33:07 IT--小哥
阅读:13836 评论:0

golang orm对比

各主流的golang orm介绍 当前较为主流/活跃的orm有gorm、xorm、gorose等 xorm 文档 github document godoc 支持的数据库有:mysql、mymysql、postgres、tidb、sqlite、mssql、oracle 事务性支持 链式api has, err := engine.Where("name = ?", name).Desc("id").Get(&user) err := engine.Where(builder.NotIn("a",...阅读全文

2018-07-11 23:34:48 曾纪文
阅读:32009 评论:1

goproxy.io for Go modules

前言:随着 go1.11 的发布,go 官方引入了 go module 来解决依赖管理问题,go module 被集成到原生的 go cmd 中,但是如果你的代码库在$GOPATH中,go1.11 的 module 功能是默认不会开启的,想要开启也非常简单, 通过一个环境变量即可开启go module:export GO111MODULE=on。关于 $GOPROXY当我们使用go的时候,go默认会直接从代码库中去下载所需的相关依赖,GOPROXY 这个环境变量可以让我们控制自己从哪里去下载源代...阅读全文

2018-09-04 12:07:16 Go中国
阅读:5640 评论:2

深入浅出Golang的协程池设计

教程制作: IT无崖子(刘丹冰) 教程简介:本教程主要针对具有一定编程基础的学员,懂得基本的编程语法。 使用Go语言实现并发的协程调度池阉割版,本文主要介绍协程池的基本设计思路,目的为深入浅出快速了解协程池工作原理,与真实的企业协程池还有很大差距,本文仅供学习参考。 一、何为并发,Go又是如何实现并发? gopool1.jpeg gopool2.jpeg 并行的好处: 同一时刻可以处理多个事务 更加节省时间,效率更高 具有并行处理能力的程序我们称之为“并发程序” 并发程序的处理能力优势体现在哪里...阅读全文

2018.10.14 14:13* IT无崖子
阅读:25493 评论:9

Golang 源码剖析:fmt 标准库 --- Print* 是怎么样输出的?

Golang 源码剖析:fmt 标准库 --- Print* 是怎么样输出的? 原文地址:Golang 源码剖析:fmt 标准库 前言 package main import ( "fmt" ) func main() { fmt.Println("Hello World!") } 标准开场见多了,那内部标准库又是怎么输出这段英文的呢?今天一起来围观下源码吧 ???? 原型 func Print(a ...interface{}) (n int, err error) { return Fpri...阅读全文

2018-12-04 20:34:42 煎鱼
阅读:1939 评论:0

Go语言适合做什么?

Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面,Go语言广泛应用于Web应用、API应用、下载应用等;除此之外,Go语言还可用于内存数据库和云...阅读全文

2018年03月22日 14:51:27 lmseo5hy
阅读:40861 评论:0

golang面试题整理

golang面试题整理 1、go的调度 2、go struct能不能比较 因为是强类型语言,所以不同类型的结构不能作比较,但是同一类型的实例值是可以比较的,实例不可以比较,因为是指针类型 3、go defer(for defer),先进后出,后进先出 func b() { for i := 0; i < 4; i++ { defer fmt.Print(i) } } 4、select可以用于什么,常用语gorotine的完美退出 golang 的 select 就是监听 IO 操作,当 IO 操...阅读全文

2019.01.18 23:06 yongfutian
阅读:55768 评论:5

一探B站后台架构, 他山之石, 何以攻玉? -- 仅从一个一线Golang开发者的角度谈B站4.22代码

4月22日, B站部分后台源代码因为某愤怒的员工, 被上传至Github. 本文我们不讨论安全, 法律 (根据代码漏洞, 去恶意攻击或者获利是违法的! 我们工作时也要注意代码安全), 我仅从开发者的角度谈谈, 这份代码我们能学到什么? B站Golang生态建设, 代码规范, 工具建设, 技术栈选择, 对于Go在部门或公司的推广又有哪些值得借鉴? 首先必须得说, B站这份代码整体还是不错的, 不是说组件或者基础库多么的厉害, 而是从整体目录分布, 业务代码分布, API易用性, 业务代码风格, 工...阅读全文

2019.04.24 22:47* 七月天_5092
阅读:18842 评论:5

深度解密Go语言之反射

反射和 Interface 息息相关,而 Interface 是我们上一篇文章的内容。在开始正文前,和大家说点题外话。上一篇关于 Interface 的文章发出后,获得了很多的关注和阅读。比如,登上了 GoCN 的每日新闻第一条:可能是编辑者觉得这篇文章称不上“深度解密”,把标题给小小地改动了下,哈哈~~在博客园登上了 48 小时阅读排行榜:在开发者头条 APP (类似于今日头条,不过内容都是技术相关的,还挺有意思的)上收获了 150 收藏,并被推荐到首页最显眼的 banner 位置,阅读量达到...阅读全文

2019-05-07 09:12:20 码农桃花源
阅读:4203 评论:0

对比学习:Golang VS Python3

Golang和Python都是目前在各自领域最流行的开发语言之一。 Golang其高效而又友好的语法,赢得了很多后端开发人员的青睐,最适用于高并发网络编程的语言之一。 Python不用说,TIOBE排行榜的前十常驻居民,现在已经稳定在前五了。在机器学习、AI、数据分析领域成为必学语言。 两门编程语言在语法上都有各自的特点,而且都易学易用。 本文对比这两门语言目的不是争谁优谁略,只是为了对比学习,适合掌握Python想学Go或者掌握Go想学Python的同学们参考。 Go和Python,一个是静态...阅读全文

2019.05.13 18:16* ZetaChow晓代码
阅读:647 评论:0

Github OAuth2.0 的使用

原文:http://www.aqcoder.com/post/content?id=37 最近想为自己的博客增加一个评论功能。多说已经倒下了,畅言需要网站备案,isso 看起来也不是很好用,算了,自己折腾一个吧。 评论系统其实还是又很多复杂的地方的,不能简单的画一个表单完事,会有很多垃圾评论的 →_→。我的博客系统暂时没有用户系统,一次需要一个第三方登录。 第三方登录有 OAuth 2.0 标准,什么是 OAuth 2.0 请参考阮一峰老师的文章 http://www.ruanyifeng.co...阅读全文

2019.05.13 22:58 ravenq
阅读:2159 评论:0

io.EOF设计的缺陷和改进

## 1. 认识io.EOFio.EOF是io包中的变量, 表示文件结束的错误:```gopackage iovar EOF = errors.New("EOF")```也通过以下命令查看详细文档:```$ go doc io.EOFvar EOF = errors.New("EOF")EOF is the error returned by Read when no more input is available. Functionsshould return EOF only to sign...阅读全文

2019-05-14 17:08:24 光谷码农
阅读:5987 评论:1

golang中等待所有goroutine执行完成.

golang中,创建一个channel并开始执行后便脱离了主程序控制,那么,类似于其他语言中, 多线程中的每个线程join到主线程,golang中 如何等待所有的 goroutine 都执行完毕? 查了下大概这个样子. 用 channel 进行同步 func main() { ch := make(chan int, 2) go func() { for i := 0; i < 10; i++ { time.Sleep(1 * time.Second) fmt.Println("go routi...阅读全文

阅读:1221 评论:0

golang框架解析-iris

前言 报了个驾校,时隔两个多月没发文章了,驾考上周终于都结束了,这之后得补补前两月的文章了。之前定了个目标,读完beego、iris、gin等go框架的源码,之前已经发过一篇过于beego的文章golang框架解析-beego,今天带来的是go框架iris的解析,主要讲解iris框架的一个生命周期过程。 在读这篇文章之前,如果没看过golang框架解析-beego的可以先去看看,因为golang框架解析-beego有讲关于go如何启动一个http server,这个知识点对理解本篇文章有很大的帮...阅读全文

2019年06月30日 TIGERB
阅读:16434 评论:0

切片传参中的坑

一,切片传参切片在工作中使用频率很高,但是不谨慎使用的话,很容易踩坑,特别是在传参的时候。话不多说,先看一段代码:func main() { slice := make([]int, 1, 3) fmt.Printf("before,slice %v, addr is %p \n", slice, &slice) changeSlice(slice) fmt.Printf("after,slice %v, addr is %p \n", slice, &slice) } ...阅读全文

2019-07-01 00:24:45 Finn
阅读:699 评论:0

Go框架解析-gin

前言 今天是我golang框架阅读系列第三篇文章,今天我们主要看看gin的框架执行流程。关于golang框架生命周期源码阅读下面是我的计划: 计划 状态 Go框架解析-beego done Go框架解析-iris done Go框架解析-gin done Go框架解析-echo doing Go框架解析-revel doing Go框架解析-Martini doing 再完成各个golang框架生命周期的解析之后,我会计划对这几个框架的优略进行一个系列分析,由于业内大多都是性能分析的比较多,我可...阅读全文

2019-07-11 17:32:33 TIGERB
阅读:2301 评论:0

goroutine 可能使程序变慢

## 如何使用 goroutine 才能使你的 CPU 满负载运行呢 下面,我们将会展示一个关于 for 循环的代码,将输入分成几个序列添加到 Goroutines 里面!我敢打赌你之前可能有过几次这种情况,但是每次引入 gorountine 都让你的代码变得更快吗? 下面是一个简单的循环示例,它似乎很容易变成并发代码,但正如我们将看到的,并发版本不仅不会更快,实际上需要花费两倍的时间。 ## 串行循环,我们以一个把索引相加的简单的串行循环作为示例 ```go // S...阅读全文

2019-07-10 21:46:01 dylanpoe
阅读:2190 评论:0