Go 入门指南
2023-05-23 14:05:45 41 举报
AI智能生成
登录查看完整内容
Go 语言入门脑图
作者其他创作
大纲/内容
简单:拒绝了走语言特性融合、简化编码复杂度
显式:希望开发人员明确知道自己在做什么,所有的东西都是显式的:
奠定基础- 正交的语法元素
举例
垂直组合-采用类型嵌入
水平组合-使用接口类型
组合:
并发:goroutines、channel、select
语法设计细节
“自带电池”的编程语言
丰富的工具链
面向工程
设计哲学
函数是 Go 语言中的基本构件 - 函数式编程
有一些动态语言的特性(通过关键字 var)
支持交叉编译
语法特点
封装
继承
多态
GO 中的面向对象设计
典型特性
Runtime
命令参数
原生编译器gc
非原生编译器gccgo
编译器
基础安装
安装目录
goproxy配置
最初期的 GOPATH
1.5 版本的 Vendor 机制
Go Module
构建模式演化
格式定义
版本兼容
语义导入版本机制
replace
exclude
升级:同一个包多个版本
降级
依赖的版本选择:最小版本选择算法 MVS
工作原理
Go 各版本的具体构建模式的机制和切换
Module 构建模式
创建一个项目
固化vendor到本地目录
命令集合
GOMODCACHE-本地的 module 缓存路径
参数设置
retract:撤回某个版本
go.mod 文件格式
使用 go.mod
深入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.Printf
fmt.Sprintf
fmt.Print(\"Hello:\
fmt.Println(\"Hello:\
打印-fmt包
获取长度 len(s)
修改字符串中的某个字符
获取字符串的子串 str[n:m]
拼接 slice 到字符串 Join
字符串拼接 +
判断前后缀 HasSuffix、HasPrefix
判断包含关系 Contains
子串索引位置 Index、LastIndex
内容替换 Replace
统计子串出现次数 Count
重复字符串 Repeat
大小写 ToLower、ToUpper
修剪 Trim、TrimRight、TrimLeft、TrimSpace
分割 Fields、Split
读取内容 NewReader
strings包
Buffer类型
Read方法
字符串拼接buffer.WriteString(s)
Write方法
bytes包
数字类型转换到字符串 Itoa、FormatFloat
字符串转数字类型 Atoi、ParseFloat
srconv包
操作字符串
rand.Int()、rand.Intn(val)
rand.Float32()、rand.Float64()
随机数-rand包
升序排序数组/切片
检查数组是否有序
搜索(二分查找)
搜索及排序-sort包
生成新序列
操作切片/数组
常用函数
内置函数
使用函数
函数
注释
定义格式
自动解引用
内嵌类型方法和继承
如何选择 receiver 类型
方法
用作枚举
iota
定义
常量const
全局变量
局部变量
作用域
声明、初始化
变量var
语法
因式分解关键字写法
并行赋值
语句格式
if-else结构
break
continue
for结构
fallthrough
switch结构
标签、goto
控制结构
语句
fmt.Errorf()
errors.New
新建错误类型
判断错误类型
处理错误
panic(xx)
recover()
错误处理
Go 入门指南
减少编码的工作量
0 条评论
回复 删除
下一页