这是我参与「青训营 x 字节后端训练营」笔记创作活动的第2天。这是我在《走进GO语言基础》课程的第2篇笔记。
大佬请退出阅读
(续前篇)
2. Go入门
2.1 基础语法
- range: 对数组操作,会返回 1.索引(不需要可用下划线);2.对应位置的值 map类似,返回 1.key;2.value
package main
import "fmt"
func main(){
nums := []int{2,3,4}
sum := 0
for i, num := range sums {
sum += num
if num==2 {
fmt.Println("index:", i)
}
}
fmt.Println(sum)
}
- 函数:参数、返回变量类型后置声明,可以在一个return语句里用 , 返回多个值(业务逻辑代码里,往往第一个值是所需结果、后面是对错误情况的反映)
- 指针:可用操作有限,
func add2ptr(n *int),*n += 2,add2ptr(&n) - 结构体:带类型的字段的集合,可以用结构体名称来初始化结构体变量(未指定初值“未初始化”:空值——数值为0,字符串为空值)。作为函数的参数,有指针、非指针两种用法,可以用指针来修改值并节省拷贝大结构体的开销(如果有)
- 结构体方法(实现的函数“类成员函数”):也有两种方法:带指针和不带指针
- 错误处理:在上面的“函数”中提到,函数错误是用返回值实现的。其中参数可定义为
err error,返回值可用nil或者errors.New("not found")——相应的,接收需要写两个变量 - 字符串操作:在strings包里有非常多的字符串操作函数(当然别忘了len(ps:中文字符数比较特别))
- 字符串格式化输出:用的就是hello world中的fmt.,其中Printf非常类似C语言中的printf,但不同的是:需要换行符;格式控制串中
%v可以代表任意类型的变量;对于结构体等,%+v``%#v会打印出更详细的内容