深入理解 Rust 所有权与借用

在 rust 中,一个变量的状态只可能是两种,一种是拥有变量的所有权,一种是拥有该变量的借用。当我们想使用变量但是又不想转移变量的所有权时我们会使用借用。有什么区别呢?如果一个变量拥有对该变量的所有权,代表可以对该变量进行任何操作,可以将旧的变量隐藏,重新声明一个可变或者不可变的变量,又或者重新转移给新的一个变量。但是借用变量不可能将一个可变变量或者不可变量重新变为其对抗的属性,也就是说,借用变量不能拥有该变量的全部控制权。

Manacher 算法

在计算机科学中,最长回文子串或最长对称因子问题是在一个字符串中查找一个最长的连续的回文的子串,例如 “banana” 最长回文子串是 “anana”。最长回文子串并不一定是唯一的,比如 “abracadabra”,没有超过 3 的回文子串,但是有两个回文字串长度都是 3:“ada” 和 “aca”。在一些应用中,我们求出全部的极大回文子串(不被其他回文串包含的回文子串)。

(译) 如何优雅的关闭 Go Channel

Channel 关闭原则

不要在消费端关闭 channel,不要在有多个并行的生产者时对 channel 执行关闭操作。

也就是说应该只在 [唯一的或者最后唯一剩下] 的生产者协程中关闭 channel,来通知消费者已经没有值可以继续读了。只要坚持这个原则,就可以确保向一个已经关闭的 channel 发送数据的情况不可能发生。

(译) Go 的工具概述

有时我会被问到 “你为什么喜欢使用 Go?” 我经常提到的一件事是作为 go 命令的一部分与语言一起存在的周到工具。我每天都会使用一些工具(例如 go fmt 和)go build,而其他类似工具 go tool pprof 仅用于帮助解决特定问题。但是在所有情况下,我都很欣赏它们使我的项目管理和维护更加容易的事实。

Golang 神级版本管理工具

对于 Golang 开发而言,Golang 语言版本的迭代速度是惊人的,几乎每几个月就需要更新一次小版本。对于 Golang 程序员来说,最渴望的特性莫过于 Go 2.0 的新特性,现在 Go 的版本已经是 1.14, 相信在不久的将来会盼望到 2.0 的到来。但是 Golang 采用的是逐步迭代小版本,最终演化为最终版本,作为 Golang 程序员需要对每一个小版本的特性进行学习,因此管理 Go 版本的工具是迫在眉睫的问题,现在为大家介绍一个神级版本管理工具。

(译) 自定义 Go Json 的序列化方法

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×