GO学习(五)

go类型转换 数值类型转换 type_name(expression) var a int = 10 var b float64 = float64(a) 示例: package main import "fmt" func main() { var sum int = 17

liujie Published on 2025-03-17

GO 学习(四)

本文介绍了Go语言中的指针、结构体(struct)、切片(slice)和Map集合的基本概念及使用方法。首先,指针通过`&`获取变量的内存地址,并通过`*`访问该地址存储的值。接着,结构体定义了新的数据类型,包含一个或多个成员,可以通过点`.`操作符访问其字段。切片是一种灵活的数据结构,基于数组实现,支持动态扩展和切割操作。最后,Map是键值对的无序集合,可通过`make`函数或字面量创建,并提供了添加、删除和查询等操作。此外,还介绍了`range`关键字在遍历数组、切片、通道以及Map时的应用。这些特性使得Go语言在处理复杂数据结构时既高效又方便。

liujie Published on 2025-03-14

GO 学习(三)

本文介绍了Go语言中函数的定义、使用及特性。Go程序至少需要一个`main()`函数作为入口。函数声明包括名称、参数列表和返回类型,标准库提供了如`len()`等内置函数。Go支持函数返回多个值,并可将函数作为参数传递给其他函数。匿名函数(闭包)在Go中也得到良好支持,它们可以访问外部变量且无需显式声明。此外,Go还允许为结构体或自定义类型定义方法,这些方法属于该类型的方法集。文章最后简要提到了Go中的变量作用域规则与数组的基本概念,强调了数组大小是其类型的一部分,不同长度的数组被视为不同类型。

liujie Published on 2025-02-21

GO 学习(二)

在 Go 语言中,`make` 是一个用于初始化切片(slice)、映射(map)和通道(channel)的内建函数。它不仅分配内存,还初始化数据结构的内部状态,使其可以直接使用。与 `new` 函数不同,`new` 只是分配内存并返回指向类型零值的指针,而不进行初始化。 - **切片**:通过 `make([]T, length, capacity)` 创建,其中 `T` 是元素类型,`length` 是长度,`capacity` 是容量(可选)。例如,`slice := make([]int, 5, 10)` 创建了一个长度为 5、容量为 10 的整数切片。 - **映射**:通过 `make(map[K]V, capacity)` 创建,其中 `K` 和 `V` 分别是键和值的类型,`capacity` 是初始容量(可选)。例如,`m := make(map[string]int)` 创建了一个空的字符串到整数的映射。 - **通道**:通过 `make(chan T, capacity)` 创建,其中 `T` 是传输的数据类型,`capacity` 是缓冲区大小(可选)。例如,`ch := make(chan int, 2)` 创建了一个容量为 2 的整数通道。 `make` 与 `new` 的主要区别在于 `make` 初始化数据结构并返回引用,而 `new` 只分配内存并返回指针。此外,文章还介绍了 Go 中的并发编程机制,包括 goroutine、channel、select 语句等,并详细解释了它们的用法和特点。

liujie Published on 2025-02-20

GO 学习(一)

本文介绍了Go语言中变量和常量的基础知识及使用方法。首先,通过 `:=` 操作符可以在函数内部声明并初始化变量,但不能用于全局变量;多变量声明时可以自动推断类型。变量间值的交换可以通过简单的赋值语句实现。空白标识符 `_` 用于丢弃不需要的值。常量在程序运行期间不可更改,支持布尔型、数字型和字符串型,并且可以用作枚举。特别地,iota 是一个特殊的常量生成器,在每个const声明行自动递增。文章还介绍了位运算符(如按位与、或、异或等)和其他运算符(如取地址符 `&` 和指针解引用符 `*`)的用法及其示例。

liujie Published on 2025-02-20