Go语言编程基础与实战示例
需积分: 9 97 浏览量
更新于2024-08-05
收藏 4KB TXT 举报
"Go语言学习笔记20220709"
本文主要涵盖了Go语言的基础语法,包括变量声明、常量、函数、切片、数组、字符串以及 iota 的使用。以下是对这些知识点的详细说明:
1. 变量声明:
在Go语言中,可以使用`var`关键字来声明变量。例如:
```go
var b, c int = 1, 2
```
此外,Go还支持简短的变量声明,使用`:=`符号,它会自动推断变量类型:
```go
d := 10
```
在`main`函数中,可以看到对变量`b`, `c`, `name`, `d`, `f`, `qwer`的声明和初始化。
2. 函数:
函数在Go语言中是通过`func`关键字定义的,如`foo()`函数:
```go
func foo() (int, string) {
return 10, "Q1mi"
}
```
函数可以返回多个值,如`foo()`返回一个整数和一个字符串。
3. 常量:
使用`const`关键字声明常量,例如:
```go
const pi = 500
```
同时,可以使用`iota`常量来创建枚举类型:
```go
const (
n1 = iota // n1 = 0
n2 // n2 = 1
n3 // n3 = 2
n4 // n4 = 2 (n3的值,因为n3后没有新的iota)
)
```
`iota`在每个常量组中递增,初始值为0。
4. 数组:
Go语言中的数组有固定长度,声明时必须指定长度和元素类型。例如:
```go
var arr0 [5]int = [5]int{1, 2, 3} // 显示初始化
var arr1 [5]int = {1, 2, 3, 4, 5} // 省略长度时,默认为括号内的元素数量
```
数组变量的长度是其类型的一部分,因此`arr0`和`arr1`虽然元素相同,但类型不同,不能互相赋值。
5. 切片(Slice):
切片是动态数组,可以理解为数组的视图。例如:
```go
var arr2 []int = {1, 2, 3, 4, 5, 6, 7}
```
切片可以用于创建可变长度的数据序列。
6. 字符串:
Go语言中的字符串是不可变的,可以通过索引来访问字符,如`fmt.Print(name)`。
7. 遍历数组/切片:
有两种遍历方式:
```go
// 指针索引遍历
for i := 0; i < len(a); i++ {
fmt.Println(a[i])
}
// 关键字range遍历
for index, value := range a {
fmt.Println(index, value)
}
```
`range`可以获取当前元素的索引和值,对于数组或切片,索引从0开始。
8. 错误处理:
Go语言通常使用错误处理模式,如:
```go
x, _ := foo() // 忽略错误
_, y := foo() // 获取错误,忽略结果
```
如果函数返回多个值,下划线 `_` 用于丢弃不需要的返回值。
9. iota 的使用:
`iota`在常量声明中作为计数器使用,每遇到一个新的常量组,它的值会自增1。例如:
```go
const (
g, h, i = iota + 1, iota + 2, iota - 1 // g = 1, h = 2, i = 0
)
```
这里,`iota`在第一个常量`g`处为1,然后依次计算。
Go语言的学习涵盖了基本的语法结构,包括变量、常量、函数、数组、切片和错误处理机制,以及独特的`iota`枚举特性。这些基础知识构成了Go语言编程的基础。
2023-04-11 上传
2019-12-30 上传
2022-10-22 上传
2021-03-29 上传
2018-06-24 上传
2019-05-16 上传
2024-09-27 上传
2023-08-10 上传
辰兮123
- 粉丝: 3
- 资源: 1
最新资源
- 单片机串口通信仿真与代码实现详解
- LVGL GUI-Guider工具:设计并仿真LVGL界面
- Unity3D魔幻风格游戏UI界面与按钮图标素材详解
- MFC VC++实现串口温度数据显示源代码分析
- JEE培训项目:jee-todolist深度解析
- 74LS138译码器在单片机应用中的实现方法
- Android平台的动物象棋游戏应用开发
- C++系统测试项目:毕业设计与课程实践指南
- WZYAVPlayer:一个适用于iOS的视频播放控件
- ASP实现校园学生信息在线管理系统设计与实践
- 使用node-webkit和AngularJS打造跨平台桌面应用
- C#实现递归绘制圆形的探索
- C++语言项目开发:烟花效果动画实现
- 高效子网掩码计算器:网络工具中的必备应用
- 用Django构建个人博客网站的学习之旅
- SpringBoot微服务搭建与Spring Cloud实践