"Go语言学习笔记,基于黑马视频教程"
这篇笔记主要涵盖了Go语言的基础知识,包括包管理、关键字、定义、初始化以及函数调用等方面的内容。以下是详细解释:
1. **包管理**:
Go语言中的程序由多个包组成,每个包都有自己的命名空间。`package main` 是程序的主入口,其中必须包含一个`main`函数,这是程序执行的起点。你可以通过`import`导入其他包,如标准库或其他自定义包。在IDE中,可以使用快捷键`ShiftAltR`运行带有`main`包的文件,并传入命令行参数。
2. **关键字**:
Go语言有一些内建的常量和类型,例如布尔型`true`和`false`,整型`int`及其不同位宽的变种,无符号整型`uint`,浮点型`float32`和`float64`,复数类型`complex128`和`complex64`,布尔型`bool`,字节型`byte`, runes(Unicode码点)`rune`,字符串`string`,以及错误类型`error`。此外,还有一些内建函数,如`make`用于创建切片、映射或通道,`len`返回长度,`cap`返回容量,`new`分配内存并初始化,`append`向切片添加元素,`copy`复制切片,`close`关闭通道,`delete`删除映射中的键值对,`complex`、`real`和`imag`用于处理复数,`panic`引发恐慌,`recover`捕获恐慌。
3. **定义**:
变量定义使用`var`关键字,如`vara,b int`,可以同时声明多个同类型的变量。常量定义使用`const`,如`const a, b int`。指针变量定义为`var p *int`,它可以指向一个整型变量。函数定义使用`func`,如`func Add(a, b int) int { return a + b }`,表示一个接受两个整型参数并返回整型结果的函数。函数类型可以作为变量赋值,例如`fTest := Add`。面向对象的方法通常将第一个参数作为接收者,如`func (p *Person) SetInfo(n string, s byte, a int)`。
4. **初始化**:
可以使用短变量声明来初始化变量,如`a, b := 10, 20`。常量定义同样可以初始化,如`const int = 10`。指针变量的初始化可以赋值一个地址,如`p := &a`,这使得`*p`等于`a`,可以通过`*p = 666`来改变`a`的值。
5. **调用函数**:
调用函数直接使用函数名加括号,传递参数即可,如`result := fTest(10, 20)`。匿名函数可以作为变量赋值,也可以用于闭包。对于匿名空接口`interface{}`,可以存储任何类型的数据,但需要注意类型断言,例如在处理切片时。
6. **方法的封装**:
方法是与特定类型关联的函数,接收者通常是结构体的指针,这样可以修改结构体的成员,如`func (p *Person) SetInfo(n string, s byte, a int)`。方法值是指不带接收者的函数,可以直接调用,不需要再次传递接收者。
7. **其他概念**:
在Go中,可以通过定义接口来实现多态。如果一个方法接收者是结构体,可以使用指针接收者,这样在调用方法时,可以避免不必要的值拷贝。接口的动态类型检查是通过类型断言完成的,例如`switch v.(type)`。
通过这些基本概念,你可以开始构建Go语言的基本知识框架,进一步深入学习Go的并发模型、网络编程、反射机制等高级特性。