Skip to content
On this page

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

这里记录每周值得分享的 Go 语言相关内容,周日发布。本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue

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

题图:基于 fyne 实现一个简单计算器 https://dev.to/mavensingh/golang-gui-calculator-2e49

刊首语

上期题目的正确了比较高:

go
package main

import "fmt"

func main() {
    pairs := [][2]string{
        {"a", "apple"},
        {"a", "ant"},
        {"b", "bee"},
    }

    m := map[string]string{
        pairs[0][0]: pairs[0][1],
        pairs[1][0]: pairs[1][1],
        pairs[2][0]: pairs[2][1],
    }
    fmt.Println(m["a"])
}

A:编译错误;B:apple;C:ant;D:panic

正确答案 C。引用网友 Akatsuki 的解答:

正常情况下 map 字面量如果声明相同的 key 会编译错误,但是 pairs 第一层是切片不是数组,编译器不会做编译时检查,因此会通过编译,然后字面量声明 map 会按照 key 顺序依次插入,因此最后一次对 key “a” 的写入就是最终结果,而最后一次写入是 ant,最后的结果就是 ant。

本期一道 for..range 切片的题目。以下代码输出什么?

go
package main

import "fmt"

func main() {
    a := []int{5}
    for range a {
        a = append(a, 1)
    }
    fmt.Println(len(a))
}

A:2;B:编译错误;C:运行 panic

资讯

1、FerretDB v0.6.0 Alpha

MongoDB 的替代品。之前叫 MangoDB,容易被人理解为碰瓷。

2、Ginkgo 2.4 发布

现代的测试框架。

3、vitess 15.0 发布

用于 MySQL 水平扩展的集群系统。

4、hertz 0.4 发布

一个 Golang 微服务 HTTP 框架。

5、micro 3.14.0 发布

云原生微服务开发平台。

6、Caire 1.4.5 发布

内容感知图像大小调整库。

7、SFTPGo 2.4.0 发布

Go 实现的功能齐全的 SFTP 服务器。

文章

1、1024,我们的节日,Gopher 该干点啥?

推荐 Go 学习路线给大家!

2、通过一个例子让你彻底掌握 Go 工作区模式

写代码更丝滑!

3、Go标准库:context 详解

本文是基于我最近对context源码学习的一些心得积累。

4、Go的方法接收者:值接收者与指针接收者

最近在 review 一些代码中,发现经常某个类型定义的方法,其接收者既有值类型,又有指针类型。

5、Go每日一库之CSRF库的使用方式和实现原理

今天给大家推荐的是web应用安全防护方面的一个包:csrf。该包为Go web应用中常见的跨站请求伪造(CSRF)攻击提供预防功能。

6、Go:gops 如何与 runtime 交互?

gops 旨在帮助开发人员诊断 Go 进程并与之交互。它提供了追踪运行中的程序数秒钟,通过 pprof 获取 CPU 的 profile,甚至直接与垃圾回收器交互的能力。

开源项目

1、aretext

兼容 Vim 快键键的极简文本编辑器。

2、rand

快速、高质量的 math/rand 替代品。

3、livekit

高性能的 WebRTC。

4、ccache

高并发的 LRU 缓存。

资源&&工具

1、vhs

CLI 屏幕录制工具。

2、quill

任意平台的简单 Mac 二进制签名。

3、cdebug

实验性的容器调试器。

4、mpeg

纯 Go 实现的 mpeg 编解码器。

订阅

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

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

wechat

Released under the MIT License.