SegmentFault 思否技术周刊 — 如何优雅的使用 Go ?
业界
作者:SegmentFault
2023-02-04 15:05:53
Go 是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
viper是适用于 go 应用程序的配置解决方案,这款配置管理神器,支持多种类型、开箱即用、极易上手。本地配置文件的接入能很快速的完成,那么对于远程 apollo 配置中心的接入,是否也能很快速完成呢?如果有多个 apollo 实例都需要接入,是否能支持呢?以及 apollo 远程配置变更后,是否能支持热加载,实时更新呢?【Go 基础篇】彻底搞懂 Channel 实现原理 最近大家私信我让我说说 Go 语言中的 Channel,有的人已经开始准备面试,真快呀!今天我们就来说说 Channel吗,日常开发中使用也是比较频繁的,面试也是高频。听我慢慢说来。Channel (通道) 是 Go 语言高性能并发编程中的核心数据结构和与 Goroutine 之前重要的通信方式。在 Go 语言中通道是一种特殊的类型。通道像一个传送带或者队列,遵循先入先出(First In First Out)的规则,保证收发数据的顺序。PHP 转 Go 实践:xjson 解析神器「开源工具集」 xutil:今天分享的文章源自于开源项目 jinzaigo/xutil 的封装。
在封装过程中,劲仔将实现原理以及相关实践思考,写成文章分享出来,从而汇总系列文章集合。PHP 转 Go:我和劲仔都是 PHP 转 Go ,身边越来越多做PHP的朋友也逐渐在用 Go 进行重构,重构过程中,会发现 php 的 json 解析操作(系列化与反序列化)是真的香,弱类型语言的各种隐式类型转换,很大程度的减低了程序的复杂度。反观 go 使用标准库 encoding/json ,来做 json 解析就没有那么愉快了(只要数据类型定义不对,就很容易抛 error )前文提到过 protobuf 协议是平台无关的。演示的客户端和服务端都是 golang 的,即使客户端和服务端不同语言也是类似的可以通信的。对于上面介绍的的这种类似于 http1.x 的模式:客户端发送请求,服务端响应请求,一问一答的模式在 gRPC 里叫做 Simple RPC (也称 Unary RPC)。gRPC 同时也支持其他类型的交互方式。本文将说明如何利用 Go 语言将 JSON 解析为结构体和数组,如果解析 JSON 的嵌入对象,如何将 JSON 的自定义属性名称映射到结构体,如何解析非结构化的 JSON 字符串。很多人使用 Goland 有很长时间的,却没有好好利用上 Goland 工具带给我们的遍历,今天咱们就来解锁一下新技巧。过去我们使用 Goland 就是简单的配置一下 go 的 proxy ,以及配置一下 ssh ,与服务器进行文件的上传和下载,其余的技巧也就没有费心去尝试挖掘和使用了,有没有同感的童鞋。
最近偶然看到一个 Go 语言库,口号喊出“一个超级简单(dead simple)的 2D 游戏引擎”,好奇点开了它的官网。这些瞬间让我产生了极大的兴趣。简单浏览一下文档,整体感觉下来,虽然与成熟的游戏引擎(如Cocos2dx,DirectX,Unity3d等)相比,ebiten功能还不算丰富。但是麻雀虽小,五脏俱全。ebiten的API设计比较简单,使用也很方便,即使对于新手也可以在1-2个小时内掌握,并开发出一款简单的游戏。更妙的是,Go语言让ebitengine实现了跨平台!接下来的3篇文章,我会介绍ebitengine这个库。对于游戏引擎来说,只介绍它的API用法似乎有点纸上谈兵。恰好我想起之前看到一个《外星人入侵》的小游戏,刚好可以拿来练手。那请大家坐稳扶好,我们出发咯。限制飞船的活动范围:上一篇文章还留了个尾巴,细心的同学应该发现了:飞船可以移动出屏幕!!!现在我们就来限制一下飞船的移动范围。我们规定飞船可以左右超过半个身位,如下图所示:很多人都是从 php 转过来的吧,不知道你们有没有发现,go 界的 orm 并没有像 php 的 orm 一样好用。这篇文章里,我们认真的讨论下这个问题,并且会在后面提出解决方案。
「技术周刊」是社区特别推出的技术内容系列,一周一主题。每周更新,欢迎「关注」。大家也可以在评论处留言自己感兴趣的主题,推荐主题相关的优秀文章。
点击左下角阅读原文,到 SegmentFault 思否社区 和文章作者展开更多互动和交流,“公众号后台“回复“ 入群 ”即可加入我们的技术交流群,收获更多的技术文章~
延伸阅读
-
SegmentFault 思否写作挑战赛 是思否社区新上线的系列社区活动,在 2 月 8 日 正式面向社区所有用户开启;挑战赛中包含多个可供作者选择的热门技术方向,根据挑战难度分为多个等级,快来参与挑
-
Git 的诞生是一个非常有趣的故事。1991年 Linus 开源了 Linux 内核,无数 Linux 爱好者在世界各地为 Linux 编写代码,那么问题来了,这些代码该如何管理呢?起初 Linus
-
本期技术周刊一起探究关于 iOS 的特性,欢迎大家阅读 ~文章推荐探究 iOS 内存问题 作者:杭城小刘本文从 Tagged Pointer、objc 源码、dealloc 原理、Autoreleas
关注公众号:拾黑(shiheibook)了解更多
赞助链接:
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
*文章为作者独立观点,不代表 K2数据恢复大师 立场
原文链接 https
://www.51uos.com/news/industry/6201.html