Go语言爱好者周刊:第 79 期

polaris · 2021-01-24 00:56:41 · 8635 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2021-01-24 00:56:41 的主题,其中的信息可能已经有所发展或是发生改变。

这里记录每周值得分享的 Go 语言相关内容,周日发布。

本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue

鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。

题图:来自 twitter

刊首语

在 Twitter 看到一道题(从作者描述看,是工作中真实遇到的),超级变态,真是没有最变态,只有更变态。这里主要让大家看一下,日常绝不会遇到这样的情况吧。

package main

import (
    "errors"
    "fmt"
)

func main() {
    еrr := errors.New("foo")
    var err error
    if еrr != nil {
        fmt.Printf("%T %v", err, err)
    }
}

以上代码,你有没有觉得很奇怪?咋一看,肯定编译不通过。你可以复制到文件中编译运行看看,或者直接访问该链接查看:https://play.studygolang.com/p/Cj7T86gwEnO

这道“题”就看看玩笑一下~

资讯

1、Go 1.15.7 新鲜出炉:修复安全问题,建议升级

Go 官方刚刚发布了 Go 1.15.7 和 Go 1.14.14,以解决最近报告的安全问题。建议所有用户都更新到以下版本之一(如果不确定哪个版本,请选择 Go 1.15.7)。

2、快报:Go 1.16 将会废弃 io/ioutil 包!

标记为弃用,不代表破坏兼容性,该包还是会保留,只是不建议使用了。相关 issue:https://github.com/golang/go/issues/42026

3、Go issue 43810

Go 对 persistent memory 的原生支持的提案。

文章

1、第 78 期周刊题目解析:答题正确率有点低

基础扎不扎实?!

2、图书《Go 语言标准库》更新了:io/fs 包讲解

Go 1.16 新包 io/fs 长文解析。

3、Unicode 和 UTF-8 是什么关系?本文为你解惑

相信看完对字符编码有更好的掌握。

4、项目实战:使用 Go 构建 GraphQL API

本博文中将使用 Go、GraphQL、PostgreSQL 创建一个 API。

5、对未初始化的的 chan 进行读写,会怎么样?为什么?

关于 chan 的面试题非常多,这个是比较常见的其中一个。

6、从这个问题谈起:channel 的哪些操作会引发 panic?

主要讲解 channel 的一些应用场景。

7、golang sync.Pool 在 1.14 中的优化

基于 golang 1.14 对 sync.Pool 进行分析。

8、字节跳动 Go RPC 框架 KiteX 性能优化实践

KiteX 是字节跳动框架组研发的下一代高性能、强可扩展性的 Go RPC 框架。

9、原来这样使用 Go HTTP 客户端才能获取更高性能

大多数语言都有提供各自的 HTTP 客户端,文章接下来部分我们将动手实践如何使用 Go 语言发起 HTTP 请求,并讨论其中有可能遇到的问题。

开源项目

1、go-enry

更快的编程语言检测库。

2、goridge

高性能的 PHP-to-Go IPC 桥接器。

3、dragonboat

一个高性能纯 Go 语言实现的多组 Raft 共识算法库。

4、statigz

在 Go 中使用 http 提供预压缩的嵌入式文件。基于 Go1.16。

5、swaggerui

带自托管 swagger-ui 的 Go 服务器。

6、pyroscope

Go 实现的持续 profiling 平台,目前支持 Go、Ruby、Python 等。

7、Pglet

后端开发人员的 Web UI 框架。

8、bitmaelum-suite

安全的电邮系统替代品(实验性)。

9、pjson

Go 的 JSON 流解析器。作者 tidwall 好几个优秀库。

10、go-pmem

支持 Go 的开源的 Native persistent memory 实现。

11、gomoji

在 Golang 中使用表情符号的有用功能。

资源&&工具

1、wuzz

想象下 curl,但可以使用文本 UI 来展示请求和响应头,参数等。

2、sealos

一条命令部署 Kubernetes 高可用集群。

3、Go 播客第 163 期

通过 CUE 配置赋能开发人员。

4、whatchanged

Golang 编写的变更日志生成器,用于生成 Git 仓库的变更日志的工具,并且提供了在线演示

5、pitop

基于 Raspberry Pi 4/3 终端的活动监视器。

订阅

这个周刊每周日发布,同步更新在Go语言中文网微信公众号

微信搜索"Go语言中文网"或者扫描二维码,即可订阅。

wechat


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

8635 次点击  
加入收藏 微博
10 回复  |  直到 2021-01-29 00:33:18
focusonline
focusonline · #1 · 4年之前

这完全说不通,怕又是一个go的坑, go离完全成熟还有很长的路要走啊

WeiGang123
WeiGang123 · #2 · 4年之前

为什么我照着他那代码重新写一遍都编译不过,https://play.studygolang.com/p/jJ9jKu8fJAm 我感觉一摸一样啊,为啥他的代码能编过。

tky753
tky753 · #3 · 4年之前

两个e的编码不一样,我用的字体能明显看出来区别

hasbug
hasbug · #4 · 4年之前

3楼 @tky753 是的,'e'的编码不一样

第一个еrr:[208 181 114 114] , е编码[208 181]
第二个err:[101 114 114] ,e 编码 [101]

play.studygolang.com

sotex
sotex · #5 · 4年之前
tky753tky753 #3 回复

两个e的编码不一样,我用的字体能明显看出来区别

正解。

zzustu
zzustu · #6 · 4年之前
WeiGang123WeiGang123 #2 回复

为什么我照着他那代码重新写一遍都编译不过,https://play.studygolang.com/p/jJ9jKu8fJAm 我感觉一摸一样啊,为啥他的代码能编过。

package main

import (
    "errors"
    "fmt"
)

func main() {
    err := errors.New("foo")
    var err error
    if err != nil {
        fmt.Printf("%T %v", err, err)
    }
}

你重复定义了err

cbping
cbping · #7 · 4年之前

持久内存编程,对此不是很了解

GotoLove-LoonGL
GotoLove-LoonGL · #8 · 4年之前

一头雾水,完全懵逼

guonaihong
guonaihong · #9 · 4年之前

楼上正解。11行里面的e不是ascii码里面的e,只是长的一样罢了。

robertchen
robertchen · #10 · 4年之前

怪不得, 我拷到vim里面显示有个e就是颜色不对。我一直想是不是gopls没配好……

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传