Go 语言中的方法,接口和嵌入类型

概述

在 Go 语言中,如果一个结构体和一个嵌入字段同时实现了相同的接口会发生什么呢?我们猜一下,可能有两个问题:

  • 编译器会因为我们同时有两个接口实现而报错吗?
  • 如果编译器接受这样的定义,那么当接口调用时编译器要怎么确定该使用哪个实现?

在写了一些测试代码并认真深入的读了一下标准之后,我发现了一些有意思的东西,而且觉得很有必要分享出来,那么让我们先从 Go 语言中的方法开始说起。

[阅读全文]

Go 语言方法接受者类型的选择

概述

很多人(特别是新手)在写 Go 语言代码时经常会问一个问题,那就是一个方法的接受者类型到底应该是值类型还是指针类型呢,Go 的 wiki 上对这点做了很好的解释,我来翻译一下。

[阅读全文]

Go 语言中的 Array,Slice,Map 和 Set

Array(数组)

内部机制

在 Go 语言中数组是固定长度的数据类型,它包含相同类型的连续的元素,这些元素可以是内建类型,像数字和字符串,也可以是结构类型,元素可以通过唯一的索引值访问,从 0 开始。

数组是很有价值的数据结构,因为它的内存分配是连续的,内存连续意味着可是让它在 CPU 缓存中待更久,所以迭代数组和移动元素都会非常迅速。

[阅读全文]

探索 Rust 的所有权机制(Ownership System)

主要内容

这两个部分的介绍是为了给那些了解 rust 基本语法,写过一些小的 demo 代码,但却不是很清楚 ownershipborrowing 机制的码农看的。

我们从最简单的开始,然后一步一步逐渐复杂化,探索每一个细节。这个介绍文章假设你非常了解 letfnstructtraitimpl 概念。

我们的目标是学习如果写 rust 代码,而且在写的过程中不要碰到有关 ownershipborrowing 的墙。

[阅读全文]