Go 入门指南(The way to Go)随着软件规模的不断扩大,诸多的学者和谷歌的开发者们在公司内部的软件开发过程中开始经历大量的挫 折,在诸多问题上都不能给出令人满意的解决方案,尤其是在使用 C++ 来开发大型的服务端软件时,情 况更是不容乐观。由于二进制文件一般都是非常巨大的,因此需要耗费大量的时间在编译这些文件上,同 时编程语言的设计思想也已经非常陈旧,这些情况都充分证明了现有的编程语言已不符合时下的生产环 境。尽管硬件在过去的几十年中有了飞速的发展,但人们依旧没有找到机会去改变 欢迎来到 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,Go0 码力 | 380 页 | 2.97 MB | 1 年前3
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 性能说明 随着软件规模的不断扩大,诸多的学者和谷歌的开发者们在公司内部的软件开发过程中开始经历大量的挫折,在诸多 问题上都不能给出令人满意的解决方案,尤其是在使用 C++ 来开发大型的服务端软件时,情况更是不容乐观。由于 二进制文件一般都是非常巨大的,因此需要耗费大量的时间在编译这些文件上,同时编程语言的设计思想也已经非常 陈旧,这些情况都充分证明了现有的编程语言已不符合时下的生产环境。尽管硬件在过去的几十年中有了飞速的发 语言自带的工具 godoc 运 行在 Google App Engine 上来作为 Web 服务器提供文本内容。在官网的首页有一个功能叫做 Go Playground,是一个 Go 代码的简单编辑器的沙盒,它可以在没有安装 Go 语言的情况下在你的浏览器中编译并运 行 Go,它提供了一些示例,其中包括国际惯例 “Hello, World!”。 更多的信息详见 github.com/golang/go,Go0 码力 | 466 页 | 4.44 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
Golang 101(Go语言101 中文版) v1.21.a比如,我们可以在Linux平台上编译出Windows程序,反 之亦然。 使用Go编写的程序常常编译得非常快。 编译时间的长短是开发愉悦度的一个 重要因素。 编译时间短是很多程序员喜欢Go的一个原因。 Go程序生成的二进制可执行文件常常拥有以下优点: 内存消耗少 执行速度快 启动快 很多C家族语言,比如C/C++/Rust等,也拥有上述的优点。 但它们缺少Go语言 的几个重要优点: 程序编译时间短 像动态语言一样灵活 对于很多项目来说, Go是一个相当不错的选择。 目前,Go主要用于网络开发、系统工具开发、数 据库开发和区块链开发。 随着从Go 1.18开始支持自定义泛型,预期Go会在更 多开发领域流行起来,比如图形界面、游戏、大数据和人工智能等。 最后,我们应该知道,没有一门语言是完美的。Go也一样。Go的设计中有很 多折衷和各种权衡。Go 1确实有一些不足。 比如,目前Go不支持任意类型的 不变量。这导 变量中的第一个路径对应的文件夹。 GOPATH文件夹中的pkg子文件夹用来缓存被本地项目所依赖的Go模块(一 个Go模块为若干Go库包的集合)的版本。 GOBIN环境变量用来指定go install子命令产生的Go应用程序二进制可执 行文件应该存储在何处。 它的默认值为GOPATH文件夹中的bin子目录所对 应的目录路径。 GOBIN路径需配置在PATH环境变量中,以便从任意目录运 行这些Go应用程序。 最简单的Go程序0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a比如,我们可以在Linux平台上编译出Windows程序,反之 亦然。 使用Go编写的程序常常编译得非常快。 编译时间的长短是开发愉悦度的一个重 要因素。 编译时间短是很多程序员喜欢Go的一个原因。 Go程序生成的二进制可执行文件常常拥有以下优点: 内存消耗少 执行速度快 启动快 很多C家族语言,比如C/C++/Rust等,也拥有上述的优点。 但它们缺少Go语言 的几个重要优点: 程序编译时间短 像动态语言一样灵活 对于很多项目来说, Go是一个相当不错的选择。 目前,Go主要用于网络开发、系统工具开发、数 据库开发和区块链开发。 随着从Go 1.18开始支持自定义泛型,预期Go会在更 多开发领域流行起来,比如图形界面、游戏、大数据和人工智能等。 最后,我们应该知道,没有一门语言是完美的。Go也一样。Go的设计中有很多 折衷和各种权衡。Go 1确实有一些不足。 比如,目前Go不支持任意类型的不变 量。这导致 GOPATH文件夹中的pkg子文件夹用来缓存被本地项目所依赖的Go模块(一 个Go模块为若干Go库包的集合)的版本。 GOBIN环境变量用来指定go install子命令产生的Go应用程序二进制可执行 文件应该存储在何处。 它的默认值为GOPATH文件夹中的bin子目录所对应 的目录路径。 GOBIN路径需配置在PATH环境变量中,以便从任意目录运行 这些Go应用程序。 最简单的Go程序0 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a比如,我们可以在Linux平台上编译出Windows程序,反之亦 然。 使用Go编写的程序常常编译得非常快。 编译时间的长短是开发愉悦度的一个重要因 素。 编译时间短是很多程序员喜欢Go的一个原因。 Go程序生成的二进制可执行文件常常拥有以下优点: 内存消耗少 执行速度快 启动快 很多C家族语言,比如C/C++/Rust等,也拥有上述的优点。 但它们缺少Go语言的几 个重要优点: 程序编译时间短 像动态语言一样灵活 对于很多项目来说,Go是一 个相当不错的选择。 目前,Go主要用于网络开发、系统工具开发、数据库开发和区 块链开发。 随着从Go 1.18开始支持自定义泛型,预期Go会在更多开发领域流行起 来,比如图形界面、游戏、大数据和人工智能等。 第2章:Go语言简介 10 最后,我们应该知道,没有一门语言是完美的。Go也一样。Go的设计中有很多折衷 和各种权衡。Go 1确实有一些不足。 比如,目前Go不支持任意类型的不变量。这导 路径对应的文件夹。 GOPATH文件夹中的pkg子文件夹用来缓存被本地项目所依赖的Go模块(一个 Go模块为若干Go库包的集合)的版本。 GOBIN环境变量用来指定go install子命令产生的Go应用程序二进制可执行 文件应该存储在何处。 它的默认值为GOPATH文件夹中的bin子目录所对应的 目录路径。 GOBIN路径需配置在PATH环境变量中,以便从任意目录运行这些 Go应用程序。 最简单的Go程序0 码力 | 591 页 | 21.40 MB | 1 年前3
使用Go与redis构建有趣的应用0 1 2 3 4 5 6 7 8 9 10 11 字符 ‘h’ ‘e’ ‘l’ ‘l’ ‘o’ ‘ ’ ‘w’ ‘o’ ‘r’ ‘l’ ‘d’ ‘\0’ 字符串串 带索引、带⻓长度记录、⼆二进制安全、带有内存预分配策略略的字符串串实现 键 “name” “age” “gender” 散列列 使⽤用哈希表储存键值对、每个键都各不不相同、获取单个键值对的复杂度为常数 值 “peter” 按分值顺序或者成员顺序执⾏行行多项有序操作、使⽤用 Skip List 实现 索引 0 1 2 3 4 5 6 7 位 0 1 1 0 1 1 1 0 位图(bitmap) 由⼀一连串串⼆二进制位组成、可单独设置指定的位、可获取指定范围的多个位⼜又或者对它们进⾏行行计数 0100101010 1001010101 0010101000 1010100100 1010101001 0101010010 引上的⼆二进制位设置为 1 。 ⽅方法⼆二 —— 使⽤用位图 为每个⽤用户创建⼀一个相对应的数字 ID ,当⼀一个⽤用户上线时,使⽤用他的 ID 作为索引,将位图指定索 引上的⼆二进制位设置为 1 。 ⽤用户名 “peter” ⽅方法⼆二 —— 使⽤用位图 为每个⽤用户创建⼀一个相对应的数字 ID ,当⼀一个⽤用户上线时,使⽤用他的 ID 作为索引,将位图指定索 引上的⼆二进制位设置为 10 码力 | 176 页 | 2.34 MB | 1 年前3
Golang 入门笔记字符类型可以进行运算的,相当于一个函数,因为他们都有对应的 Unicode 码 字符类型的本质 1. 字符型 存储到计算机中,需要讲字符对应的码值(整数)找出来 存储:字符串 -> 对应码值--> 二进制 --> 存储 读取:二进制 --> 码值 --> 字符 --> 读取 2. 字符和码值的对应关系是通过字符编码表决定的(是规定好的) 2.Go语言的编码都统一成了 utf-8 . 非常方便,很统一,不会有编码乱码的困扰 2. 单目运算 3. 算数运算符 4.移位运算符 5.关系运算符 6. 位运算符 7. 逻辑运算符 8. 赋值运算符 9.逗号 6. 位运算符 定义:位运算符对整数在内存中的二进制位进行操作。 位运算符一览表 7. 其他运算符 其他运算符列表 Go 语言明确不支持三元运算符 演示代码 8.键盘输入语句 介绍 在变成中,需要接受yoghurt输入的数据,就可以使用键盘输入语句来获取 对于整数有四种表示方式 1. 二进制, 0,1 满二进一 2. 8进制 0-7 满 8 进 1, 以数字0开头 3 十进制,0-9 满10进1 4. 十六进制,0-9, A-F 满16 进一, 以 0x 或者 0X 开头, A-F 不区分大小写;例子0x21F + 1 = 0X21B0 演示案例 进制图示 进制转换 10. 位运算 二进制在运算中的说明 二进制是逢二进位的进制位,0、 1是基本符0 码力 | 2 页 | 511.29 KB | 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
Hello 算法 1.1.0 Go版float、double ,用于表示小数。 ‧ 字符类型 char ,用于表示各种语言的字母、标点符号甚至表情符号等。 ‧ 布尔类型 bool ,用于表示“是”与“否”判断。 基本数据类型以二进制的形式存储在计算机中。一个二进制位即为 1 比特。在绝大多数现代操作系统中,1 字节(byte)由 8 比特(bit)组成。 基本数据类型的取值范围取决于其占用的空间大小。下面以 Java 为例。 ‧ 整数类型 。这个现象比较反直觉,它的内在原因涉及原码、反码、补码的相关知识。 首先需要指出,数字是以“补码”的形式存储在计算机中的。在分析这样做的原因之前,首先给出三者的定 义。 ‧ 原码:我们将数字的二进制表示的最高位视为符号位,其中 0 表示正数,1 表示负数,其余位表示数字 的值。 ‧ 反码:正数的反码与其原码相同,负数的反码是对其原码除符号位外的所有位取反。 ‧ 补码:正数的补码与其原码相同,负数的补码是在其反码的基础上加 1111 1101 (反码) = 1111 1110 (反码) = 1000 0001 (原码) → −1 另一方面,数字零的原码有 +0 和 −0 两种表示方式。这意味着数字零对应两个不同的二进制编码,这可能 会带来歧义。比如在条件判断中,如果没有区分正零和负零,则可能会导致判断结果出错。而如果我们想处 理正零和负零歧义,则需要引入额外的判断操作,这可能会降低计算机的运算效率。 +0 →0 码力 | 383 页 | 18.48 MB | 1 年前3
共 20 条
- 1
- 2













