Go 入门指南(The way to Go)上安装 Go 2.5 在 Windows 上安装 Go 2.6 安装目录清单 2.7 Go 运行时(runtime) 2.8 Go 解释器 第3章:编辑器、集成开发环境与其它工具 3.1 Go 开发环境的基本要求 3.2 编辑器和集成开发环境 3.3 调试器 3.4 构建并运行 Go 程序 3.5 格式化代码 3.6 生成代码文档 3.7 其它工具 3.8 Go 性能说明 语言自带的工具 godoc 运 行在 Google App Engine 上来作为 Web 服务器提供文本内容。在官网的首页有一个功能叫做 Go Playground,是一个 Go 代码的简单编辑器的沙盒,它可以在没有安装 Go 语言的情况下在你的浏览器中编译并运 行 Go,它提供了一些示例,其中包括国际惯例 “Hello, World!”。 更多的信息详见 github.com/golang/go,Go 1. export DISABLE_NET_TESTS=1 如果你完全不想运行包的测试,你可以直接运行 ./make.bash 来进行单纯的构建过程。 5. 测试安装 使用你最喜爱的编辑器来输入以下内容,并保存为文件名 test.go 。 示例 2.1 hello_world1.go 1. package main 2. 2.3 在 Linux 上安装 Go - 300 码力 | 466 页 | 4.44 MB | 1 年前3
Go 入门指南(The way to Go)欢迎来到 Go 语言开发的奇妙世界! Go入门指南 - 3 - 本文档使用 看云 构建 第一部分:学习 Go 语言 第1章:Go 语言的起源,发展与普及 第2章:安装与运行环境 第3章:编辑器、集成开发环境与其它工具 第1章:Go 语言的起源,发展与普及 1.1 起源与发展 Go 语言起源 2007 年,并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 Go 语言自带的工具 godoc 运行在 Google App Engine 上来作为 Web 服务器提供文本内容。在官网的首页有一个功能叫做 Go Playground,是一个 Go 代码的简单编辑器的沙盒,它可以在没有安装 Go 语言的情况下在你的浏览 器中编译并运行 Go,它提供了一些示例,其中包括国际惯例 “Hello, World!”。 更多的信息详见 github.com/golang/go,Go 包的相关测试: export DISABLE_NET_TESTS=1 如果你完全不想运行包的测试,你可以直接运行 ./make.bash 来进行单纯的构建过程。 5. 测试安装 使用你最喜爱的编辑器来输入以下内容,并保存为文件名 test.go 。 示例 2.1 hello_world1.go package main func main() { println("Hello",0 码力 | 380 页 | 2.97 MB | 1 年前3
Go Web编程Gocode(代码自动完成工具)的完美支持 Go语言文档查看和Api快速检索 代码表达式信息显示F1 源代码定义跳转支持F2 Gdb断点和调试支持 gofmt自动格式化支持 其他特征 支持多国语言界面显示 完全插件体系结构 支持编辑器配色方案 基于Kate的语法显示支持 基于全文的单词自动完成 支持键盘快捷键绑定方案 Markdown文档编辑支持 实时预览和同步显示 自定义CSS显示 可导出HTML和PDF文档 批量转换/合并为HTML/PDF文档 端,输入gocode,是不是能够 正确运行,如果不行就说明$PATH没有配置正确。 Vim Vim Vim是从vi发展出来的一个文本编辑器, 代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛 使用。 图1.9 VIM编辑器自动化提示Go界面 1. 配置vim高亮显示 cp -r $GOROOT/misc/vim/* ~/.vim/ 2. 在~/.vimrc文件中增加语法高亮显示 下的包,当然这个设置就是可以设置我们额外的lib能访问的路径 5. 恭喜你,安装完成,你现在可以使用:e main.go体验一下开发Go的乐趣。 Emacs Emacs Emacs传说中的神器,她不仅仅是一个编辑器,它是一个整合环境,或可称它为集成开发环境,这些功能如让使用者 置身于全功能的操作系统中。 图1.10 Emacs编辑Go主界面 1. 配置Emacs高亮显示 cp $GOROOT/misc/emacs/*0 码力 | 295 页 | 5.91 MB | 1 年前3
2.1 gofmt 的文化演变产生的词汇,位置和空格流会和注释流进行合并. 词汇会扩展为字符串,所有的文本流将会被制表符写入器处理. 制表符写入器会将制表符替换为合适数量的空格. 对于固定宽度的字体,处理的很好. 比例大小的字体也可以被编辑器支持,如果这个编辑器可以支持灵活的制表符宽度. 4/21/2015 gofmt 的文化演变 http://127.0.0.1:3999/gofmt-cn.slide#1 22/34 综合在一起 (2)0 码力 | 34 页 | 9.97 MB | 1 年前3
GoFrame框架介绍及设计GoFrame框架介绍及设计 郭强 成都医联科技 架构师 目 录 框架介绍 01 模块化设计 02 统一框架设计 03 代码分层设计 04 对象封装设计 05 DAO封装设计 06 未来发展规划 07 框架介绍 第一部分 • 框架介绍 • 框架架构 • 项目初心 框架介绍 GoFrame是一款模块化、高性能、企业级的Go基础开发框架。 • 模块化、松耦合 • 模块丰富、开箱即用 • 单仓包设计 • 模块聚合设计 • 常见问题 模块化设计 什么是模块? 模块化的目标? 模块也称作组件,是软件系统中可复用的功能逻辑封装单位。 在不同的软件架构层次,模块的概念会有些不太一样。 在开发框架层面,模块是某一类功能逻辑的最小封装单位。 在Golang代码层面中,我们也可以将package称作模块。 软件进行模块化设计的目的, 是为了使得软件功能逻辑尽可能的解耦和复用, 代码分层设计-经典MVC 痛点: • 视图展示与数据操作方式的进一步剥离,特别是移动端的发展, 前端MVVM框架的发展,我们大多数场景下已不再需要服务端 渲染View • Model层级的代码既维护着数据,也封装着业务逻辑,随着业 务逻辑变得越来越复杂,这一层功能逻辑会变得越来越臃肿不 易维护 • Controller和Model的职责边界模糊,对于开发人员写好代码的 要求会比较高 经典MVC模式0 码力 | 37 页 | 8.84 MB | 1 年前3
Go在工程实践的错误处理如何完善错误信息 第二部分 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 gRPC错误日志:param error 哪个Client 调用? 哪一行代码 调用? 我的 参数问题? 对方的问题? ... 遇到一个问题,我们就追加一个日志字段,排查错误效率非常低 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 对端信息 请求方法 请求参数 响应数据 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 • 在调试阶段,日志用红色高亮错误 • 肉眼才能最快的定位到error日志 • 利用IDE规则,直接点开代码执行行号,跳到指定的代码位置 • 一堆info日志中藏着error日志 • 你能一眼找到error日志吗? 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 框架封装错误信息 gRPC HTTP MySQL MySQL Redis Kafka ... • 脏活累活交给框架 • 组件要全面统一 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 • 没有调试信息和错误信息 • 对接起来会非常麻烦 优雅处理错误信息 第三部分 为什么定位慢?-- 错误处理 不要透传错误 错误码唯一性 记录一次错误 假设用户反馈了无法打开一个文件 我们的程序员非常认真 记录了文件不存在的错误日志0 码力 | 30 页 | 3.11 MB | 1 年前3
Golang在接入层长连接服务中的实践-黄欣常驻内存,内存中有个大连接对象map(资源问题) • 请求都是基于连接的(如果模块间存在资源的互相引用,当资源变更的情况 下,容易发生panic)(竟态问题) • 对象编程 – 封装:conn资源(包括goruntine)作为结构体封装起来,保证所有资源 销毁干净 – 解耦:保证其他模块不直接使用对象中资源 – 同步:竞态需要锁 特点:有状态,存在大量的公共资源并发访问 心得—coding—实现0 码力 | 31 页 | 1.67 MB | 1 年前3
2-6-Golang 在 Baidu-FrontEnd 的应用-陶春华并发性 –Process, Thread, Event(编程难度) • 开发效率 –语言的描述效率:代码量 –语言的简洁、易用 –库支持 后台程序开发的需求(2) • 大型程序的组织 –数据封装能力 –Namespace • 可测试能力 –单测,覆盖度测量 • 错误检查能力 –编译 –程序异常的trouble shooting 后台程序开发的需求(3) • 上线和运维 –对运行环境的依赖 –C程序中很大比例的Bug和内容有关 • 分布式/高并发的处理 –10年前还是一个很hot的话题;目前也还没有普 遍掌握 –CPU资源的调度:Process/Thread/Event –数据的封装和互斥访问; –并行运算逻辑的同步 C vs Python (1) • 性能: – 相差10倍以上 – Python: 解释执行,动态类型 • 并发性能 – C:直接用系统的机制 – Python:0 码力 | 35 页 | 730.17 KB | 1 年前3
Hello 算法 1.0.0b1 Golang版左子结点引用 Right *TreeNode // 右子结点引用 } 「结点高度」是最远叶结点到该结点的距离,即走过的「边」的数量。需要特别注意,叶结点的高度为 0 ,空结 点的高度为 ‑1。我们封装两个工具函数,分别用于获取与更新结点的高度。 // === File: avl_tree.go === /* 获取结点高度 */ func (t *aVLTree) height(node *TreeNode) hello‑algo.com 113 结点平衡因子 结点的「平衡因子 Balance Factor」是 结点的左子树高度减去右子树高度,并定义空结点的平衡因子为 0 。 同样地,我们将获取结点平衡因子封装成函数,以便后续使用。 // === File: avl_tree.go === /* 获取平衡因子 */ func (t *aVLTree) balanceFactor(node *TreeNode) 应采用的旋转方法 > 0 (即左偏树) ≥ 0 右旋 > 0 (即左偏树) < 0 先左旋后右旋 < 0 (即右偏树) ≤ 0 左旋 < 0 (即右偏树) > 0 先右旋后左旋 为方便使用,我们将旋转操作封装成一个函数。至此,我们可以使用此函数来旋转各种失衡情况,使失衡结点 重新恢复平衡。 // === File: avl_tree.go === /* 执行旋转操作,使该子树重新恢复平衡 */ func0 码力 | 190 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b2 Golang版左子结点引用 Right *TreeNode // 右子结点引用 } 「结点高度」是最远叶结点到该结点的距离,即走过的「边」的数量。需要特别注意,叶结点的高度为 0 ,空结 点的高度为 ‑1。我们封装两个工具函数,分别用于获取与更新结点的高度。 // === File: avl_tree.go === /* 获取结点高度 */ func (t *aVLTree) height(node *TreeNode) hello‑algo.com 116 结点平衡因子 结点的「平衡因子 Balance Factor」是 结点的左子树高度减去右子树高度,并定义空结点的平衡因子为 0 。 同样地,我们将获取结点平衡因子封装成函数,以便后续使用。 // === File: avl_tree.go === /* 获取平衡因子 */ func (t *aVLTree) balanceFactor(node *TreeNode) 应采用的旋转方法 > 0 (即左偏树) ≥ 0 右旋 > 0 (即左偏树) < 0 先左旋后右旋 < 0 (即右偏树) ≤ 0 左旋 < 0 (即右偏树) > 0 先右旋后左旋 为方便使用,我们将旋转操作封装成一个函数。至此,我们可以使用此函数来旋转各种失衡情况,使失衡结点 重新恢复平衡。 // === File: avl_tree.go === /* 执行旋转操作,使该子树重新恢复平衡 */ func0 码力 | 202 页 | 15.73 MB | 1 年前3
共 24 条
- 1
- 2
- 3













