Go语言基础语法详解:值类型、引用类型与操作

需积分: 1 0 下载量 42 浏览量 更新于2024-09-07 收藏 4KB MD 举报
"Go语言基础语法概览" Go语言,又称为Golang,是一种静态类型的、编译型的、并发型的、垃圾回收的、具有C风格语法的编程语言。本篇文档将概述Go语言的基础语法,包括值类型与引用类型、基本数据类型、结构体、接口、数组、切片、映射、通道以及类型转换等内容。 ### 值类型与引用类型 在Go语言中,变量是对内存空间的命名。根据存储方式的不同,变量分为值类型和引用类型: - **值类型**:包括基本数据类型如`int`、`float`、`bool`、`string`以及数组和结构体。它们的变量在赋值时会复制整个值,修改副本不会影响原值。 - **引用类型**:如`slice`、`map`、`channel`,它们的变量实际上是存储了对内存的引用。修改引用类型的变量会影响到原始数据。 ```go var int1 int var bl bool bl = (1 != 0) type Student struct {} var arr1 [5]string ``` ### 基本数据类型 - **整型**(`int`):其大小依赖于平台,通常为32位或64位。 - **浮点型**(`float32`、`float64`):`float32`占用4字节,适用于较小范围的数值;`float64`占用8字节,具有更大的范围和精度。 - 浮点数的存储结构包括符号位、指数位和小数位。 - **布尔型**(`bool`):只有两个取值,`true`和`false`。 - **字符串**(`string`):不可变的字节序列,可以通过下标访问,但不能直接修改。 ### 类型转换 Go语言提供了类型转换的方法,例如`strconv.Itoa()`用于将整型转换为字符串,`strconv.Atoi()`则用于将字符串转换为整型。需要注意,当进行类型转换时,若字节数不匹配,会从后面开始截取。 ### 数组 数组的声明方式如`var b [3][3]int`,其长度是固定的。此外,`var e = new([3]string)`声明一个指向数组的指针,而`a := []int{1,2,3}`则创建一个动态大小的数组切片。 ### 切片 切片是一种轻量级的数据结构,可以理解为数组的一部分。创建切片的三种方式: 1. 基于数组:`make([]int, 5[, 10])` 2. 基于数组切片:`var slice []int = array[1:3]` 3. 直接创建:`make([]int, 5)`,其中可选的第三个参数表示容量。 切片包含指针、长度和容量,可以使用`append()`函数来添加元素,当容量不足时,会自动扩容。 ### 映射(Map) 映射使用`make(map[keyType]valueType)`创建,键值对之间通过`key:`来分隔。映射是引用类型,其生命周期由`make`管理。 ```go m := make(map[string]int) m["key"] = 123 ``` ### 通道(Channel) 通道是Go语言的并发特性之一,用于在goroutine之间安全地传递数据。创建通道可以使用`make(chan dataType)`。 ```go ch := make(chan int) ch <- 1 // 发送 v := <- ch // 接收 ``` ### 结构体与接口 虽然在提供的内容中没有具体涉及,但值得一提的是,结构体(`struct`)是自定义数据类型,可以组合多个不同类型的数据。接口(`interface{}`)是Go语言的多态实现,定义了一组方法签名,任何实现了这些方法的类型都可以被认为是实现了该接口。 总结,Go语言的基础语法涵盖了大量的编程概念,包括数据类型、变量、控制流、函数、复合类型等,这些构成了Go语言强大的功能基础,使得它成为开发高效、并发和可靠软件的优秀选择。后续的学习应深入理解这些概念,并逐步掌握更高级的特性,如goroutines和通道的使用,以充分利用Go语言的并发能力。