Go 入门指南
2023-05-23 14:05:45 42 举报
AI智能生成
Go 语言入门脑图
作者其他创作
大纲/内容
设计哲学
简单:拒绝了走语言特性融合、简化编码复杂度
显式:希望开发人员明确知道自己在做什么,所有的东西都是显式的:
组合:
奠定基础- 正交的语法元素
垂直组合-采用类型嵌入
举例
水平组合-使用接口类型
并发:goroutines、channel、select
面向工程
语法设计细节
“自带电池”的编程语言
丰富的工具链
典型特性
函数是 Go 语言中的基本构件 - 函数式编程
有一些动态语言的特性(通过关键字 var)
支持交叉编译
语法特点
GO 中的面向对象设计
封装
继承
多态
Runtime
开发配置
命令参数
编译器
原生编译器gc
非原生编译器gccgo
基础安装
安装目录
goproxy配置
包依赖管理
构建模式演化
最初期的 GOPATH
1.5 版本的 Vendor 机制
Go Module
Module 构建模式
工作原理
语义导入版本机制
格式定义
版本兼容
依赖的版本选择:最小版本选择算法 MVS
replace
exclude
升级:同一个包多个版本
降级
Go 各版本的具体构建模式的机制和切换
使用 go.mod
创建一个项目
命令集合
固化vendor到本地目录
参数设置
GOMODCACHE-本地的 module 缓存路径
go.mod 文件格式
retract:撤回某个版本
参考
深入Go Module.
测试
编程技巧
引言
为什么会出现
易于开发
编译速度快
执行效率高
性能比较
特点
支持高并发:对于网络通信、并发和并行编程的极佳支持
高性能
开发效率高
构建速度(数百毫秒到几秒) -采用包模型进行依赖管理,加快构建
上手快,关键字少
运维部署简单
用途
高性能分布式系统领域
游戏服务端开发
适合物联网时代,实现复杂事件处理(CEP)
不适合用来开发对实时性要求很高的软件
冷门小知识
语言的名字是 Go 不是 Goland,Golang 仅应用于命名 Go 语言官方网站
Go 语言大事记:2008 年初开发,2009-11-10宣布开源,2012-03-18 Go1.0 版本正式发布
Gopher 指定Go 语言开发者
要素
文件名
25个关键字/保留字
标识符
空白标识符_
36 个预定义标识符
new() 和 make() 的区别
进制
运算符
位运算
按位与 &
按位或 |
按位异或 ^
位清除 &^
位左移 <<
位右移 >>
逻辑运算符 ==、!=、<、<=、>、>=
算术运算符 +、-、* 、/、%、++、--
运算符优先级
类型
数据存储方式
值类型
引用类型
指针
基本类型
数字类型
整数 int int8 int16 int32 int64
无符号整数 uintptr uint uint8 uint16 uint32 uint64
浮点型float32、float64
布尔类型bool
字符类型string
解释字符串
非解释字符串
复数complex64、complex128
复合类型
类型转换
时间和日期
语法
包
导入包
查找包
可见性规则
分级声明
常用包
与其它语言交互:unsafe
操作系统:os-os/exec-syscall
控制并发:sync
压缩(解压缩)文件:archive/tar-/zip-compress
输入输出:fmt-io-bufio-path/filepath-flag
字符串:strings-strconv-unicode-regexp-bytes
计算操作:math-math/cmath-math/big-math/rand-sort
集合:container-/list-ring-heap
网络:net-net/http-html
解析与生成:encoding/json-encoding/xml-text/template
运行时:runtime
反射:reflect
工具类:time-log
函数
函数格式
参数传递
按引用传递
将数组传递给函数
按值传递
返回值
命名返回值
非命名返回值
defer
函数分类
普通函数
匿名函数(闭包)
高阶函数
将函数做为参数
将函数作为返回值
使用函数
特殊函数
init()
main()- 程序的入口点
常用函数
打印-fmt包
fmt.Printf
fmt.Sprintf
fmt.Print("Hello:", 23)
fmt.Println("Hello:", 23)
操作字符串
获取长度 len(s)
修改字符串中的某个字符
获取字符串的子串 str[n:m]
strings包
拼接 slice 到字符串 Join
字符串拼接 +
判断前后缀 HasSuffix、HasPrefix
判断包含关系 Contains
子串索引位置 Index、LastIndex
内容替换 Replace
统计子串出现次数 Count
重复字符串 Repeat
大小写 ToLower、ToUpper
修剪 Trim、TrimRight、TrimLeft、TrimSpace
分割 Fields、Split
读取内容 NewReader
bytes包
Buffer类型
Read方法
Write方法
字符串拼接buffer.WriteString(s)
srconv包
类型转换
数字类型转换到字符串 Itoa、FormatFloat
字符串转数字类型 Atoi、ParseFloat
随机数-rand包
rand.Int()、rand.Intn(val)
rand.Float32()、rand.Float64()
操作切片/数组
搜索及排序-sort包
升序排序数组/切片
检查数组是否有序
搜索(二分查找)
生成新序列
内置函数
注释
方法
定义格式
自动解引用
内嵌类型方法和继承
如何选择 receiver 类型
常量const
用作枚举
iota
定义
变量var
作用域
全局变量
局部变量
声明、初始化
语句
语句格式
因式分解关键字写法
并行赋值
控制结构
if-else结构
for结构
break
continue
switch结构
fallthrough
标签、goto
错误处理
新建错误类型
fmt.Errorf()
errors.New
判断错误类型
处理错误
panic(xx)
recover()
0 条评论
下一页