头图

SegmentFault 思否技术周刊 Vol.71 — 解读 Go 语言

刚刚结束的关于「Go」语言的技术征文活动,参与活动的创作者们,撰写了很多优质技术内容,本期周刊做了汇总,欢迎大家一起阅读~

本篇文章较长,建议收藏后慢慢阅读~

文章推荐

【Go 微服务】开发 gRPC 总共分三步 // 王中阳 Go

通过这篇文章我们已经掌握了 gRPC 相关的知识点,可以独立用 Go 实现客户端和服务端的编写,并且通过服务注册对外提供服务,实现可客户端和服务端的 gRPC 通信。

【Go 微服务】一文带你玩转 ProtoBuf // 王中阳 Go

在网络通信和通用数据交换等应用场景中经常使用的技术是 JSON 或 XML,在微服务架构中通常使用另外一个数据交换的协议的工具 ProtoBuf。
ProtoBuf 也是我们做微服务开发,进行 Go 进阶实战中,必知必会的知道点。

PHP 转 GO 必看:为什么我觉得 GoFrame 的 garray 比 PHP 的 array 还好用? // 王中阳 Go

在学习 Go 基础知识的时候了解到 Go 的数组和 PHP 的数组并不一样;从一定程度上讲,Go的 slice 切片类型和 PHP 的数组 array 比较像(不固定长度、引用类型、动态扩容等),但是在开发使用中远远不像 PHP 的 array 灵活。

通过阅读源码解决项目难题:GToken 替换 JWT 实现 SSO 单点登录 // 王中阳 Go

今天和大家分享一下使用 GoFrame 的 gtoken 替换 jwt 实现 sso 登录的经验。期间我也踩了一些坑,最终是通过阅读源码解决了项目中遇到的问题。

三分钟学会 go 语言的变量定义 // 夕水

特别说明: 本文只适合新手学习,这篇文章带我们入门 go 语言的定义变量的方式,其实和 javascript 很相似,所以特意总结在此。
在 go 语言中,也有变量和常量两种,首先我们来看变量的定义,定义变量我们分为定义单个变量和多个变量。

前端如何入门 Go 语言 // robin

类比法是一种学习方法,它是通过将新知识与已知知识进行比较,从而加深对新知识的理解。在学习 Go 语言的过程中,我发现,通过类比已有的前端知识,可以更好地理解 Go 语言的特性。

Go 微服务实战之如何使用 go-micro 写微服务应用 // 宇宙之一粟

本文介绍了微服务及其相关概念,重点比较了单体架构和微服务架构的区别,最后介绍了 Go 优秀的微服务框架之一的 Go-micro,并展示该框架的安装和使用。

Go 微服务实战之如何实现加解密操作的微服务开发 // 宇宙之一粟

本文通过实现加解密操作展示了一个微服务应用的开发过程。通过编写服务端,成功运行了一个微服务实例,该服务能够通过加密请求得到一个加密后的密文,通过解密请求将消息进行解密,并返回明文结果。然后通过编写客户端向服务端进行 RPC 调用,成功将 Hello world 字符串进行加密并打印出密文和明文的结果。

回声嘹亮 之 Go 的 Echo 框架 —— 上手初体验 // 宇宙之一粟

Go 语言的 Web 开发框架其实也有很多: Gin 、 Beego 、 Revel 。
Echo 作为其中的一款。截止到 2022 年,目前已经在 Github 上收获了 21.7k 的 Star 和 1.9k 的 Fork,可以说是经得起时间检验,得到了大家的认可,正可谓对应上标题中的回声嘹亮。

如何在 Go 代码中运行 C 语言代码 // 宇宙之一粟

我们了解到,Go 语言脱胎于 C 语言,这就意味着在某些更底层的细节中,我们可以使用 C 语言实现,然后通过 Go 来调用相关的 C 代码。其实这一特点,在 Java 的 JVM、Python 的解释器也是通过底层是直接调用 C 实现的。
而本篇文章就来学习一下,如何在 Go 语言中运行 C 程序。

Go 语言如何连接并操作 MySQL 数据库 // 宇宙之一粟

Go 有 sql 包,它提供了一个围绕 SQL(或类似 SQL)数据库的通用接口。 sql 包必须与数据库驱动程序一起使用。该软件包提供自动连接池。每次查询数据库时,我们都在使用应用程序启动时设置的连接池中的连接,连接被重用。

Go 十年了,终于想起要统一 log 库了! // 煎鱼

思考一个问题:平时你在写 Go 工程时,是否很少直接使用官方标准库 log?
在正式项目中,大多是优先使用几个爆款第三方库,例如:Logrus、Zap、zerolog。而标准库 log,在临时调试,屏幕输出的场景居多,占比较少。

在 Golang 中依赖注入是 解药 还是 毒药? // LinkinStar

回过头来看我一开始说的观点其实就不矛盾了,就拿我自己举例来说,如果是一些小项目,并且很多时候 go 并不是做 web 开发,更多的是做工具那么 DI 有时候并不一定需要。
但是对于一些大项目来说,我觉得为了以后的考虑,还是别挖坑了,无论是从消除全局变量还是扩展性来说,DI 或者说 OOP 都是非常有必要的。

Gin + GORM 入门到实战 // 程序员海军

最近一直在学习 Go,目前在做项目熟悉 Go 阶段。 本文来分享一下 Gin + GORM 的一些 开发体验,有喜欢 Go 方向的朋友。

Go入门系列:你好,世界 // 似水流年

Go 源码需要先编译,再分发和运行。如果是单 Go 源文件的情况,我们可以直接使用 go build 命令 +Go 源文件名的方式编译。不过,对于复杂的 Go 项目,我们需要在 Go Module 的帮助下完成项目的构建。

go 如何从零编写 protoBuf 插件 // 海生

本期的主要内容将手把手教会大家,编写 probuf 的 go 插件,以我自己编写的一个生成结构体的插件为例子。

go 语言 web 开发框架 — gin 框架入门 // 良猿

安装并配置 GO 工作区,在 GOPATH 的 src 目录下新建项目文件夹,使用 go mod init命令初始化项目,使用 go get -u github.com/gin-gonic/gin 命令安装 gin。

Go 语言与数据库 — GORM 入门 // 良猿
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
Golang Copier 入门到入坑 // 小白要生发

由于 golang 没有对复杂结构体的 clone 方法,所以,就需要有 copier 这样的工具库。
它看起来很简单,但实际使用中,有些“坑”还是要注意!

动图图解!怎么让 goroutine 跑一半就退出? // 小白debug

通过 runtime.Goexit() 可以做到提前结束协程,且结束前还能执行到 defer 的内容
runtime.Goexit() 其实是对 goexit0 的封装,只要执行 goexit0 这个函数,当前协程就会退出,同时还能调度下一个可执行的协程出来跑。
通过 newproc 可以创建出新的 goroutine,它会在函数栈底部插入一个 goexit。
os.Exit() 指的是整个进程退出;而 runtime.Goexit() 指的是协程退出。两者含义有区别。

Go 中调用外部命令的几种姿势 // darjun

本文介绍了使用 os/exec 这个标准库调用外部命令的各种姿势。同时为了便于使用,我编写了一个 goexec 包封装对 os/exec 的调用。这个包目前 for 我自己使用是没有问题的,大家有其他需求可以提 issue 或者自己魔改

微服务框架 go-zero 快速实战 // 阿兵云原生

go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。
go-zero 中的 api,rpc,数据库等涉及的代码,都可以给我们一键生成,无需耗费我们什么精力

【5-5 Golang】实战—Go微服务发现问题分析 // 西红柿

初次遇到这问题时候,觉得匪夷所思。基于现状,冷静分析问题产生情况,一个一个去排查或者排除,切记急躁。
抓包验证,二进制协议又不方便分析,只能去研究zookeeper通信协议了。最终还是需要一遍一遍Review代码,寻找蛛丝马迹,不要忽视任何可能产生的异常。

Go ,浅谈包管理模式 // 甜点cc

任何一门编程语言都离不开对各种工具包的使用,工具包的管理就显得异常重要了。Go 的包管理方式是逐渐演进的,本文介绍 Go 语言的两种包管理模式。

Go ,函数(包)的使用 // 甜点cc

本文通过一个实现加减乘除运算的小程序来介绍 go 函数的使用,以及使用函数的注意事项,并引出了对包的了解和使用。


# SegmentFault 技术周刊 #

「技术周刊」是社区特别推出的技术内容系列,一周一主题。

每周二更新,欢迎「关注」。大家也可以在评论处留言自己感兴趣的主题,推荐主题相关的优秀文章。

如有问题可以添加小姐姐微信~

image.png


SegmentFault_社区周刊
主题技术周刊,每周分享新鲜有趣的技术干货。
avatar头饰
Beverly
SegmentFault 思否社区打工人

怂人面前全是坑,努力填坑 。

819 声望
2.1k 粉丝
0 条评论
推荐阅读
SegmentFault 思否技术周刊 Vol.78 — Git 必看技术补给
Git 的诞生是一个非常有趣的故事。1991年 Linus 开源了 Linux 内核,无数 Linux 爱好者在世界各地为 Linux 编写代码,那么问题来了,这些代码该如何管理呢?起初 Linus 使用 BitKeeper(BitMover 公司的版本控制软...

Beverly2阅读 1.1k

封面图
Golang 中 []byte 与 string 转换
string 类型和 []byte 类型是我们编程时最常使用到的数据结构。本文将探讨两者之间的转换方式,通过分析它们之间的内在联系来拨开迷雾。

机器铃砍菜刀21阅读 54.7k评论 1

年度最佳【golang】map详解
这篇文章主要讲 map 的赋值、删除、查询、扩容的具体执行过程,仍然是从底层的角度展开。结合源码,看完本文一定会彻底明白 map 底层原理。

去去100214阅读 11k评论 2

年度最佳【golang】GMP调度详解
Golang最大的特色可以说是协程(goroutine)了, 协程让本来很复杂的异步编程变得简单, 让程序员不再需要面对回调地狱, 虽然现在引入了协程的语言越来越多, 但go中的协程仍然是实现的是最彻底的. 这篇文章将通过分析...

去去100213阅读 11.1k评论 4

【已结束】SegmentFault 思否技术征文丨浅谈 Go 语言框架
亲爱的开发者们:我们的 11 月技术征文如期而来,这次主题围绕 「 Go 」 语言,欢迎大家来参与分享~征文时间11 月 4 日 - 11 月 27 日 23:5911 月 28 日 18:00 前发布中奖名单参与条件新老思否作者均可参加征文...

SegmentFault思否11阅读 4.6k评论 11

封面图
【Go微服务】开发gRPC总共分三步
之前我也有写过RPC相关的文章:《 Go RPC入门指南:RPC的使用边界在哪里?如何实现跨语言调用?》,详细介绍了RPC是什么,使用边界在哪里?并且用Go和php举例,实现了跨语言调用。不了解RPC的同学建议先读这篇文...

王中阳Go8阅读 3.6k评论 6

封面图
【golang】sync.WaitGroup详解
上一期中,我们介绍了 sync.Once 如何保障 exactly once 语义,本期文章我们介绍 package sync 下的另一个工具类:sync.WaitGroup。

去去100213阅读 30k评论 2

avatar头饰
Beverly
SegmentFault 思否社区打工人

怂人面前全是坑,努力填坑 。

819 声望
2.1k 粉丝
宣传栏