Go 入门指南(The way to Go)这些设计理念没有建立其它概念之上,所以并不会因为牵扯到一些概念而将某个概念复杂化,他们之间是 相互独立的。 Go 语言有一套完整的编码规范,你可以在 Go 语言编码规范 页面进行查看。 它不像 Ruby 那样通过实现过程来定义编码规范。作为一门具有明确编码规范的语言,它要求可以采用不 同的编译器如 gc 和 gccgo(第 2.1 节)进行编译工作,这对语言本身拥有更好的编码规范起到很大帮 助。 LALR 是 Go 下载地址:Download the Go distribution 。 我们接下来也会带你一步步的完成安装过程。 1. 设置 Go 环境变量 我们在 Linux 系统下一般通过文件 $HOME/.bashrc 配置自定义环境变量,根据不同的发行版也可 能是文件 $HOME/.profile ,然后使用 gedit 或 vi 来编辑文件内容。 export GOROOT=$HOME/go 为了确保相关文件在文件 代码和命令行编译与链接程序的方式。 1. 语法高亮是必不可少的功能,这也是为什么每个开发工具都提供配置文件来实现自定义配置的原因。 2. 可以自动保存代码,至少在每次编译前都会保存。 3. 可以显示代码所在的行数。 4. 拥有较好的项目文件纵览和导航能力,可以同时编辑多个源文件并设置书签,能够匹配括号,能够跳 转到某个函数或类型的定义部分。 5. 完美的查找和替换功能,替换之前最好还能预览结果。 6. 可以注释或取消注释选中的一行或多行代码。0 码力 | 380 页 | 2.97 MB | 1 年前3
Go 入门指南(The way to Go)包 9.5 自定义包和可见性 9.6 为自定义包使用 godoc 9.7 使用 go install 安装自定义包 9.8 自定义包的目录结构、go install 和 go test 9.9 通过 Git 打包和安装 9.10 Go 的外部包和项目 9.11 在 Go 程序中使用外部库 第10章:结构(struct)与方法(method) 10.1 结构体定义 10.2 使用工厂方法创建结构体实例 使用工厂方法创建结构体实例 10.3 使用自定义包中的结构体 10.4 带标签的结构体 10.5 匿名字段和内嵌结构体 10.6 方法 10.7 类型的 String() 方法和格式化描述符 10.8 垃圾回收和 SetFinalizer 第11章:接口(interface)与反射(reflection) 11.1 接口是什么 11.2 接口嵌套接口 11.3 类型断言:如何检测和转换接口变量的类型 传输数据 12.12 Go 中的密码学 第13章:错误处理与测试 13.1 错误处理 13.2 运行时异常和 panic 13.3 从 panic 中恢复(Recover) 13.4 自定义包中的错误处理和 panicking 13.5 一种用闭包处理错误的模式 13.6 启动外部命令和程序 13.7 Go 中的单元测试和基准测试 13.8 测试的具体例子 13.9 用(测试数据)表驱动测试0 码力 | 466 页 | 4.44 MB | 1 年前3
2.游戏战中陪伴助手微服务架构设计与应用变更困难,修改策略 = 修改代码 开发 - 代码低内聚,交接难度大 扩展 - 没有考虑扩展 功能 - 难以实现战略推荐 - 早期:先考虑有无 - 引入推荐系统 系统思考——如何评判方案的好坏? 需要定义几个维度来评判一个方案的好坏 - 响应性能: 获取事件到输出策略的延迟 - 服务器成本: 每服务千人成本越低越好 - 运营简易度: 设计新运营策略的难度 - 开发迭代: 如需开发介入,那么功能迭代的速度 历史玩家的状态,也可作为策略 - 通过特征向量匹配历史玩家 - 策略举例: - 关键帧内容:目标坐标、有资源、有敌人、无开火、无车 - 话术播报:“去小地图标注的地方搜刮,注意避开敌人” 方案探索——关键帧 / 路径推荐 针对具体场景开发 - 优势: - 战略级规划、序列化推荐 - 策略自动生成(除坐标外的特征穷举) - 主要不足: - 特征维度增加后,维度爆炸 - 启发: - 抽象:子状态(特征维度) 这完全可以出一道算法题 召回效率优化——算法优化 - 分析维度: - 复杂度对比(红色表示显著影响复杂度的维度): - 结论 - 时间复杂度:前缀树 < 有向无环图 < 倒排索引 < 遍历 维度 定义 实际数量级 P(Player) 玩家的 token 个数(输入 token 数) 大部分在 30~50 R(Repository) 库中的 token 策略个数 最多 10w S(Strategy)0 码力 | 47 页 | 11.10 MB | 1 年前3
Golang在接入层长连接服务中的实践-黄欣基础平台-架构部 目录 • 背景 • 架构 • 心得 目录 • 架构 • 心得 背景—why 长连接? • 业务场景 – 大量实时计算 • 司机乘客撮合 • 实时计价 – 高频度的数据交互 • 坐标数据 • 计价数据 – App和服务端双向可达 • 上行(抢单) • 下行(派单) 背景—why golang? • 开发效率 • 异步模型,同步原语 – C:代码上各种回调、思维中保持冷静 稳定性(最好不用升级) • 解决方法 – Protobuf(golang) – 接口设计分层 • 框架层:模块间通信协议(类似tcp/udp) • 业务层:bytes(类似应用层)留给业务自己定义就好了 架构—性能 • conn svr 架构—集群扩展 • Proxy本身无限扩容(无状态) • 依赖的存储可无限扩容(状态交给存储) – Redis集群:codis集群方案 – Mysql集群:中间件方案0 码力 | 31 页 | 1.67 MB | 1 年前3
使用Go与redis构建有趣的应用具有多种不不同的数据结构可⽤用,其中包括:字符串串、散列列、列列表、集合、有序集合、位图 (bitmap)、HyperLogLog、地理理坐标(GEO) 特点 • 具有多种不不同的数据结构可⽤用,其中包括:字符串串、散列列、列列表、集合、有序集合、位图 (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 特点 • 具有多种不不同的数据结构可⽤用,其中包括:字符串串、散列列、列列表、集合、有序集合、位图 (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) 特点 • 具有多种不不 具有多种不不同的数据结构可⽤用,其中包括:字符串串、散列列、列列表、集合、有序集合、位图 (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) • 强⼤大的多机功能⽀支持:主从复0 码力 | 176 页 | 2.34 MB | 1 年前3
Go基础语法宝典关键字 go的二十五个关键字 简介 数据类型的定义 定义变量 常量 内置基础类型 Boolean 数值类型 字符串 错误类型 分组声明 iota枚举 Go程序设计的一些规则 array 、 slice 、 map array slice slice 有一些简便的操作 slice 有几个有用的内置函数 map make 、 new 操作 零值 流程控制 if if goto for switch 函数 函数的定义 多个返回值 变参 传值与传指针 defer 函数作为值、类型 Panic和Recover main 函数和 init 函数 import 1、相对路径 2、绝对路径 特殊的import 1、点操作 2、别名操作 3、_操作 struct类型 struct类型的声明 struct 的匿名字段 method goroutine channels Buffered Channels Range和Close Select 超时 runtime goroutine 错误处理 Error类型 自定义Error 错误处理 总结 更多Golang资源包:https://github.com/0voice/Introduction-to-Golang 关键字 Go语言设计的关键字,了解这些关键字有助于命名变量的冲突避免0 码力 | 47 页 | 1020.34 KB | 1 年前3
Go Web编程小结 12.部署与维护 12.1 应用日志 12.2 网站错误处理 12.3 应用部署 12.4 备份和恢复 12.5 小结 13.如何设计一个Web框架 13.1 项目规划 13.2 自定义路由器设计 13.3 controller设计 13.4 日志和配置设计 13.5 实现博客的增删改 13.6 小结 14.扩展Web框架 14.1 静态文件支持 14.2 Session支持 它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。 Go为软件构造提供了一种模型,它使依赖分析更加容易,且避免了大部分C风格include文件与库的开头。 Go是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感 觉起来比典型的面向对象语言更轻量级。 Go完全是垃圾回收型的语言,并为并发执行与通信提供了基本的支持。 按照其设计,Go打算为多核机器上系统软件的构造提供一种方法。 Subversion) Launchpad (Bazaar) 所以为了go get 能正常工作,你必须确保安装了合适的源码管理工具,并同时把这些命令加入你的PATH中。其实 go get支持自定义域名的功能,具体参见go help remote。 go install go install 这个命令在内部实际上分成了两步操作:第一步是生成结果文件(可执行文件或者.a包),第二步会把编译好的结果移0 码力 | 295 页 | 5.91 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a汇总了许多知识点和细节,从而可以帮助Go程序员节省很多学习时间。 有什么其它值得一提吗? 本书不涵盖自定义泛型相关内容。 请阅读《Go自定义泛型101》 ? 一书来了 解使用自定义泛型。 另外,在阐述值类型转换、值赋值和值比较规则时,自定义泛型中频繁使用的 类型参数类型被特意忽略掉了。 也就是说,本书不考虑自定义泛型中的情 形。 本书由老貘 ? 历时三年写成。目前本书仍在不断改进和增容中。你的赞赏是 本书和Go101 支持延迟函数调用(defer)。 支持类型内嵌(type embedding)。 支持类型推断(type deduction or type inference)。 内存安全。 自动垃圾回收。 良好的代码跨平台性。 自定义泛型(从Go 1.18开始)。 除了以上特性,Go还有如下亮点: Go的语法很简洁并且和其它流行语言相似。 这使得具有一定编程经验的 程序员很容易上手Go编程。 当然,对于没有编程经验的初学者,Go也比 上面所有提到的优点使得Go成为一个出众的编程语言。 对于很多项目来说, Go是一个相当不错的选择。 目前,Go主要用于网络开发、系统工具开发、数 据库开发和区块链开发。 随着从Go 1.18开始支持自定义泛型,预期Go会在更 多开发领域流行起来,比如图形界面、游戏、大数据和人工智能等。 最后,我们应该知道,没有一门语言是完美的。Go也一样。Go的设计中有很 多折衷和各种权衡。Go 1确实有一些不足。0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 入门笔记Golang 的设计者去掉了 c/java 中自增和自减的容易混淆的写法,让golang 更加简介,统一(强制性) 测试题目 题目 1. 假如还有 97 天放假,请问:xx 个星期零 xx 天 2. 定义一个变量保存华氏摄氏度,华式摄氏度转换摄氏度的公式为:5/9*(华氏摄氏度-100), 请求出华氏摄氏度的对应摄氏度温度。 答案代码 2. 关系运算符 基本介绍 1. 关系运算符的结果都是 如果一个语句写多行就需要加一个分号,不推荐 字符串连接 Go 语言字符串连接通过 `+` 实现 案例 : fmt.Println("Google " + "Runoob") 关键字 关键字或保留字 预定义标识符 Go 语言的空格 1. 变量声明必须用空格隔开。例如: var age int 2. 语句中适当的空格可以提升代码的可读性,容易理解。 数据类型 1. 布尔类型(bool) 基本介绍 注意事项(使用细节) 1. Golang 字符串的字节使用 UTF-8编码进行表示 Unicode 文本,这样golang 统一适用了 utf-8 变么,就能避免了中文乱码的问题 2. 字符串一旦定义就不能修改 错误案例: var str1 string = "124" str1[1] = "3" 3.字符串的两种形式 1) 双引号,会识别转义字符 2)反引号,以字符串的原生形式输出,包0 码力 | 2 页 | 511.29 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a汇总了许多知识点和细节,从而可以帮助Go程序员节省很多学习时间。 有什么其它值得一提吗? 本书不涵盖自定义泛型相关内容。 请阅读《Go自定义泛型101》 一书来了解 使用自定义泛型。 另外,在阐述值类型转换、值赋值和值比较规则时,自定义泛型中频繁使用的 类型参数类型被特意忽略掉了。 也就是说,本书不考虑自定义泛型中的情形。 本书由老貘 历时三年写成。目前本书仍在不断改进和增容中。你的赞赏是本 书和Go101 支持延迟函数调用(defer)。 支持类型内嵌(type embedding)。 支持类型推断(type deduction or type inference)。 内存安全。 自动垃圾回收。 良好的代码跨平台性。 自定义泛型(从Go 1.18开始)。 除了以上特性,Go还有如下亮点: Go的语法很简洁并且和其它流行语言相似。 这使得具有一定编程经验的程 序员很容易上手Go编程。 当然,对于没有编程经验的初学者,Go也比很 上面所有提到的优点使得Go成为一个出众的编程语言。 对于很多项目来说, Go是一个相当不错的选择。 目前,Go主要用于网络开发、系统工具开发、数 据库开发和区块链开发。 随着从Go 1.18开始支持自定义泛型,预期Go会在更 多开发领域流行起来,比如图形界面、游戏、大数据和人工智能等。 最后,我们应该知道,没有一门语言是完美的。Go也一样。Go的设计中有很多 折衷和各种权衡。Go 1确实有一些不足。0 码力 | 608 页 | 1.08 MB | 1 年前3
共 56 条
- 1
- 2
- 3
- 4
- 5
- 6













