内容简介
Go(Golang)语言在语法上与C、C++ 语言相似,是一门开源的编程语言,可用于编写简单的、实用的应 用程序。Go语言支持内存管理和垃圾回收(GC)机制,使用Go协程可以轻松实现并发计算。本书通过通 俗易懂的文字,着重讲解Go语言编程的基础知识,同时配有丰富的示例。 本书主要内括: 开发环境配置及语法基础,代(Package),内置运算符与数据类型,代码流程 控制,函数式、接口与结构体,数组、切片与映射类型,反射技术,管理命令行参数,I/O、数据压缩及文件操 作,加密与解密,网络编程,Go协程。 作为入门教程,本书适合对编程感兴趣并且希望通过自学来掌握Go语言基础知识的读者使用,或者 有其他编程语言基础的读者阅读参考。同时,本书也可作为高等院校计算机及相关专业的教材。
目录
目录第1章准备工作1.1安装Go语言编译器1.2配置环境变量1.3验证Go语言编译器的工作状态第2章语法基础2.1代码结构2.2mai与main函数2.3Go语句2.4代码块2.5注释2.6使用Go语言编译器第3章运算符3.1操作数3.2算术运算符3.2.1四则运算符3.2.2取余运算符3.2.3如何实现指数运算3.2.4自增与自减运算符3.3比较运算符3.4逻辑运算符3.5位运算符3.5.1按位与3.5.2按位或3.5.3取反3.5.4位移3.5.5按位异或3.5.6清除标志位3.6成员运算符3.7取地址运算符3.8复合运算符3.9运算符的优先级第4章程管理4.1package语句4.2程的目录结构4.3导入语句4.4初始化函数4.5模块4.5.1go.mod文件的基本结构4.5.2创建go.mod文件4.5.3编辑go.mod文件4.5.4使用本地模块4.6成员的可访问第5章变量与常量5.1变量的初始化5.2组合赋值5.3匿名变量5.4常量5.5批量声明5.6变量的作用域5.7变量的默认值第6章基础类型6.1字符与字符串6.1.1rune类型6.tring类型6.2数值类型6.2.1示例: 获取数值类型占用的内存大小6.2.2整数常量的表示方式6.2.3科学记数法6.2.4复数6.3日期与时间6.3.1Month类型6.3.2Weekday类型6.3.3Duration类型6.3.4Time类型6.3.5Sleep函数6.3.6Timer类型6.4指针6.4.1何时使用指针类型6.4.2new函数6.5iota常量第7章函数7.1函数的定义7.2调用函数7.3return语句7.4多个返回值7.5可变个数的参数7.6匿名函数7.7将函数作为参数传递第8章流程控制8.1顺序执行8.2if语句8.3switch语句8.3.1基于表达式构建的switch语句8.3.2基于类型构建的switch语句8.3.3fallthrough语句8.4for语句8.4.1仅带条件子句的for语句8.4.2带三个子句的for语句8.4.3枚举集合元素语句8.4.4continue与break语句8.5代码跳转8.5.1代码标签与goto语句8.5.2break、continue语句与代码跳转第9章接口与结构体9.1自定义类型9.2结构体9.2.1结构体的定义9.2.2结构体的实例化9.2.3方法9.3接口9.3.1接口的定义9.3.2接口的实现9.3.3空接口——interface{}9.3.4接口与函数9.4类型嵌套9.5类型断言第10章数组与切片10.1数组10.1.1数组的初始化10.1.2访问数组元素10.1.3*[n]T与[n]*T的区别10.1.4多维数组10.2切片10.2.1创建切片实例10.2.2添加和删除元素第11章映射与链表11.1映射11.1.1映射对象的初始化11.1.2访问映射对象的元素11.1.3检查key的存在11.2双向链表11.2.1与双向链表有关的API11.2.2创建链表实例11.2.3添加和删除元素11.2.4移动元素11.2.5枚举链表元素11.3环形链表11.3.1与环形链表有关的API11.3.2使用环形链表11.3.3滚动环形链表11.3.4链接两个环形链表第12章反射12.1关键API12.2获取类型信息12.2.1类型分辨12.2.2枚举结构体类型的方法列表12.2.3枚举结构体类型的字段列表12.2.4查找嵌套结构体的字段成员12.2.5获取函数的参数信息12.2.6获取通道类型的信息12.2.7判断类型是否实现了某个接口12.3Value与对象的值12.3.1修改对象的值12.3.2读写结构体实例的字段12.3.3更新数组/切片的元素12.3.4调用函数12.3.5调用方法12.3.6读写映射类型的元素12.4动态构建类型12.4.1New函数12.4.2创建数组类型12.4.3创建结构体类型12.4.4动态创建和调用函数12.4.5生成通用函数体12.5结构体的Tag第13章字符串处理13.1打印文本13.2格式化输出13.2.1格式化整数值13.2.2格式化浮点数值13.2.3格式化字符串13.2.4格式化布尔类型的值13.2.5%T与%v格式控制符13.2.6输含前缀的整数值13.2.7设置输出内容的宽度13.2.8控制浮点数的精度13.2.9参数索引13.2.10通过参数来控制文本的宽度和精度13.3读取输入文本13.3.1读取键盘输入的内容13.3.2从文件中读入文本13.3.3以特定的格式读取文本13.4实现Stringer接口13.5连接字符串13.6替换字符串13.7拆分字符串13.8查找子字符串13.8.1查找前缀与后缀13.8.2查找子字符串的位置13.9修剪字符串13.9.1去除前缀和后缀13.9.2去除字符串首尾的空格13.9.3修剪指定的字符13.10重复字符串13.11字符串与数值之间的转换13.12切换大小写13.13使用Builder构建字符串第14章常用数学函数14.1求值14.2大值与小值14.3三角函数与反三角函数14.4幂运算14.5方/立方根14.6大型数值14.6.1大型整数值之间的运算14.6.2阶乘运算14.6.3使用大型浮点数值14.7数14.7.1生成浮点数14.7.2生成整数14.7.3设置数种子14.7.4生成全排列14.7.5“洗牌”程序14.7.6生成字节序列第15章排序15.1基本排序函数15.2实现递减排序15.3按字符串的长度排序15.4Interface接口第16章输入与输出16.1简单的内存缓冲区16.2与输入/输出有关的接口类型16.2.1实现读能16.2.2嵌套封装16.3Buffer类型16.4Copy函数16.5MultiReader函数和MultiWriter函数16.6SectionReader第17章文件与目录17.1文件r/>17.1.1Create函数与Open函数17.1.2重命名文件17.1.3获取文件信息17.1.4OpenFile函数17.2创建和删除目录17.3硬链接与符号链接17.3.1硬链接17.3.2符号链接17.4WriteFile函数与ReadFile函数17.5临时文件17.6更改程序的工作目录第18章加密与解密18.e64的编码与解码18.1.1内置base64编码方案18.1.2基于流的编码与解码18.1.3自定义字符映射表18.2DES与AES算法18.2.1Block接口18.2.2BlockMode模式18.2.3基于流的加密与解密18.3哈希算法18.3.h.Hash接口18.3.2使用crypto中的哈希API18.3.3HMAC算法18.4RSA算法18.4.1生成密钥18.4.2加密和解密18.4.3存储密钥18.5PEM编码18.5.1编码与解码18.5.2解码后的保留数据18.5.3消息头第19章命令行参数19..Args变量19.2命令行参数分析API——fla19.2.1命令行参数与变量的绑定19.2.2Value接口第20章数据压缩20.1标准库对压缩算法的支持20.2Gzip压缩算法20.2.1Gzip基本用法20.2.2压缩多个文件20.2.3解压多个文件20.3DEFLATE算法20.4自定义的索引字典20.5Zip文档20.5.1从Zip文档中读取文件20.5.2在内存中读写Zip文档20.5.3注册压缩算法20.6Tar文档第21章协程21.1启动Go协程21.2通道21.2.1实例化通道21.2.2数据缓冲21.2.3单向通道21.2.4通道与select语句21.3互斥锁21.4WaitGroup类型第22章网络编程22.1枚举本地计算机上的网络接口22.2Socket通信22.2.1TCP示例: 文件传输22.2.2UDP示例: 文本传输22.3客户端22.3.1发送GET与POST请求22.3.2发送自定义头22.4服务器22.4.1创建服务器22.4.2实现Handler接口22.4.3ServeMux类型22.4.4封装函数22.4.5读取URL参数22.4.6获取客户端提交的表单数据22.4.7读取客户端上传的文件22.5CGI编程22.5.1准备工作22.5.2示例: 一个简单的CGI程序22.5.3使用cg22.5.4在程中获取Request对象附录A常用API与程对照表附录BGo语言代码编辑工具使用说明