- 博客(12)
- 收藏
- 关注
原创 第十一章:接口与类型断言
接口是描述一系列方法的集合,目的是为了抽象,方便代码解耦 接口类型是一种抽象的类型,不会暴露它所代表的内部属性的规范,只会展示出它自己的方法,因此不能将接口类型实例化。 Go的接口是非常灵活的,通过一种方式来声明对象的行为,谁实现了这个行为,就相当于实现了接口里面声明各种方法的集合,但接口本身不去实现这些方法所需要的一些操作,所以说是抽象的方法。 说白了就是接口只声明方法,具体怎么实现由类定义。接口没有数据字段,只有定义的方法。 type Animal interface{ Name() string
2021-12-08 19:32:26
1180
原创 第十章:文件操作
文件分类: 文本文件(记事本打开能正常显示的文件) 二进制文件(图片,可执行程序,压缩包) 目录基本操作: Windows目录不区分大小写,Linus目录区分 有关io操作的标准库 标准库 功能 io 为IO原语提供基本的接口 io/ioutil 封装一些实用的I/O函数 fmt 实现格式化I/O bufio 实现带缓冲I/O 读取目录: io/ioutil .ReadDir() 返回一个有序列表,内容为指定的目录信息 func ReadDir(dir
2021-12-07 16:40:04
156
原创 第九章:错误处理
Go语言设计者认为类似try-catch-finally的传统异常处理机制很容易造成开发者对异常机制的滥用,Go语言中推荐多值返回来返回错误,这种检查错误的方式给程序员提供了很大的控制权。 错误定义: error类型其实是一个接口。 type error interface{ Error() string } error接口包含Error()方法,返回一个字符串。这意味着所有包含Error() string 格式的方法都可以实现错误接口 创建错误:使用errors包的New函数创建自定义错误 fun
2021-12-06 16:55:45
95
原创 第八章:结构体
Go语言不支持类,但是提供了结构体 通过使用结构体,可以自定义一系列由相同类型或不同类型的数据构成的数据集合,用来实现复杂的数据结构 定义结构体: 指针类型接收者:结构体方法的接收者为指针类型 即使实例不是指针类型,也可以修改结构体 如: func (u *User 结构体) ChangeName {…} 值类型接收者:func (u User) ChangeName {…} 知识扩展:使用结构体解析XML语言(一种标记电子文件使其具有结构性的标记语言,标记指计算机能理解的信息符号),适合万维网传输
2021-12-06 16:10:08
81
原创 第七章:包管理
Go语言包的主要作用就是把功能相似或相关的代码组织在同一个包中。 GOPATH:Go所有的操作(编码,依赖管理,构建,测试和安装)基本上都是围绕GOPATH进行的,实际开发环境中,需要把所需工程的根目录放到GOPATH中,否则即使处于同一工作区的代码之间也无法通过绝对路径包路径完成调用。 Windows设置步骤:setx GOPATH=%GOPATH%;C:\NewProject echo %GOPATH% Linux设置步骤:修改配置文件/etc/profile 在文件末尾添加 export GO
2021-12-02 20:15:00
241
原创 第六章:函数
函数的作用就是把相对独立的某个功能抽象出来,使之成为一个独立的实体。比如把支持对话的社交网站把对话的功能封装成一个函数,网站会把操作日志的功能封装成函数供调用。 Go函数特性:参数数量不固定;匿名函数及其闭包;函数本身作为值传递;函数的延迟执行;把函数作为接口调用 函数也是一种类型,可以保存在变量中。(别名) var 变量名 func 函数() 函数参数:相邻变量为同类型可以不必重复写出类型;支持可变参数(函数声明时可以没有固定数量的参数),一般放在参数列表末尾 如func 函数名(固定参数列表,v…
2021-12-01 16:09:26
100
原创 第五章:Go语言内置容器
Go语言主要内置容器由数组,切片和映射 数组:具有类型相同,长度固定且在对应存放在内存中的一块连续区域的数据结构。 声明数组:var 数组变量名 [数组长度]元素类型 初始化数组:var 数组变量名[数组长度]{元素} 也可不设置数组长度用…代替,go语言编译器根据元素个数来设置数组大小。 切片:切片本身并不存储任何元素,只是对现有数组的引用。三要素:地址,长度,容量、 切片地址:切片第一个元素所指向的内存地址,其地址与截取的数组或切片开始位置对应的元素地址相同。 生成方式:数组,切片,创建一个切片 初始
2021-12-01 00:15:31
618
原创 第四章:流程控制
条件判断语句: if else语句 注意:表达式后跟的左括号必须与表达式放在同一行,否则编译无法通过 if还有一种常见写法,在表达式前面添加一个语句,使用变量接受语句的返回的值,通过对该变量的判断再选择执行分支。\ func main(){ num := 101 if num > 100{ fmt.Println(a," > 100") }else if num == 100 { fmt.Println(a," = 100") }else{ fmt.Println(a," &
2021-11-29 22:02:15
83
原创 第三章:常量和运算符
常量: 大多数编程语言会使用全大写的变量名表示常量 常量定义 显式定义: const 常量名 常量类型 = value 隐式定义(由编译器判断类型): const 常量名 = value 注意:一个常量被声明后可以不使用,变量被声明后必须使用。 常量组和常量枚举: 如果程序需要用到大量值相同的常量,可以定义常量组,因为在定义常量组时,若不提供初始值,则表示使用上行的表达式 Go语言现阶段还没有枚举,但是我们可以通过特殊常量iota来模拟枚举。 itoa在const关键字出现时被重置为0,不同con
2021-11-29 16:04:29
80
原创 第二章:基本变量和类型
变量: 声明变量: 标准格式 var 变量名 变量类型 批量格式(带括号) var ( a int b string c bool ) 初始化变量: 标准格式: var age int = 20 编译器推导类型格式(省去变量类型,由编译器推导): var age = 20 短变量声明并初始化 : age := 20 常见,注意变量不可重复声明 但是在多个短变量声明并初始化中只要由一个新声明的变量出现在左值,即使存在重复声明的情况,编译器也不会报错。 var name string
2021-11-29 15:28:35
331
原创 第一章:走进GO
Go(Goland)是一门静态编译型语言。 何为静态? 数据类型的检查在运行前 何为编译型? 直接把源代码翻译成机器语言,由机器运行 解释型语言:将源代码先翻译成中间代码,然后通过解释器解释运行 特点:高效,简洁,高并发,自带垃圾回收机制。 应用场景:服务端开发,并发编程,网络编程==>服务端网络请求接收和解析,分布式系统开发,后端API接口和虚拟机处理。 高效:减少编译器使用的内存量;减少链接时间来减少编译时间;工程结构简单,没有头文件和不允许交叉编译等规则。 高并发:从语言层面原生支持并发
2021-11-29 11:25:01
281
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人