Golang 方法

与多数现代编程语言类似,Go 允许为类型绑定方法(method)。此外,Go 还支持类型抽象(type abstraction),开发者可以编写调用方法的代码而无需显式指定具体实现。 然而,Go 语言处理方法(methods)、接口(interfaces)和类型(types)的方式与当今主流语言截然

Golang Pointer

6.3 指针表示可变参数 在 Go 语言中,常量(constants)用于为在编译时可以计算出的文本表达式提供名称。这意味着这些值在程序编译时就已经确定,不会在运行时改变。除了常量之外,Go 语言没有内建的方式来确保某个变量在初始化后不会被修改。现代软件工程推崇不可变性。 不可变类型是指在创建后不能

Golang defer 关键字

程序在运行时常常会创建一些临时资源,比如文件句柄或网络连接。这些资源在使用完毕后需要被清理掉,以确保不会造成资源泄漏或其他问题。清理工作必须进行,不管函数有多少种退出方式(比如正常返回、错误返回、抛出异常等),也不管函数是否成功执行完毕。这意味着无论函数执行路径如何,资源清理是必须执行的。在 Go

Golang 闭包

5.3 闭包(closures) 闭包(closures)是计算机科学领域中的一个专业术语,在函数内部声明的函数能够访问和修改外部函数中声明的变量。在 Go 语言中,闭包(closures)通常指的是在函数内部(称为外部函数)定义的匿名函数,它可以捕获并使用其外部函数的局部变量。 func main

Golang 函数可变参数/多返回值

5.1.2 可变参数 函数 fmt.Println 可将任意数量的输入参数打印到屏幕上。这是如何实现的呢? func Println(a ...interface{}) (n int, err error) 与其他编程语言一样,Go 也支持可变参数,即允许函数接受任意数量的同类型参数。可变参数必须

Golang for-range / switch

for-range 示例 4.13:for-range 循环遍历切片 evenVals := []int{2, 4, 6, 8, 10, 12} for i, v := range evenVals { fmt.Println(i, v) } 运行上述代码,将生成如下输出: 0 2 1 4

Golang Map

切片在处理顺序数据时非常有用。与大多数语言一样,Go 提供了一种内置数据类型(即映射),用于将一个值与另一个值关联起来。映射(map)类型的写法为 map[keyType]valueType。接下来,介绍一下声明映射的几种方法。首先,可以使用 var 声明来创建一个映射(map)变量,并将其设置为初

Golang Slice

Golang 中数组的长度是数组类型的一部分,这为数组的使用带来了一定的局限性: 不能使用变量来指定数组的大小,因为 Go 中的类型必须在编译时(而不是运行时)就确定。 无法用类型转换将不同大小的数组进行相互转换,因此无法用单个函数处理不同长度的数组,也无法将不同长度的数组赋值给同一变量 由于这些限

C++/Golang/Rust string 对比

C++ 和 Rust 更倾向于把“拥有一段字符缓冲区”直接建模成一个可以修改的容器;Go 则把 string 建模成“只读字节序列”,把可变缓冲区这个角色明确交给 []byte。 Go string / Rust &str: [ptr][len] C++ string / Rust String

Golang 常量的无类型特性

无类型 Go 中的"无类型"(untyped)是一个容易被误解的概念。它不是指"没有类型",而是指有确定的类型(如整数、字符串),但基础类型尚未确定(int、float64),直到使用时才根据上下文推断。 有六种未明确类型的常量类型,分别是无类型的布尔型、无类型的整数、无类型的字符、无类型的浮点数、