zing

【原创翻译】准备工作

社会主义新天地 提交于 2020-10-29 02:25:02
计算机编程定义计算机如何运作,它是一门艺术、手艺和科学。这本书将教会你如何用由google设计的Go语言编写计算机程序。 Go是一门通用编程语言,具有高级的特性和精炼的语法。它具有广泛的跨平台能力,拥有健壮且文档齐全的通用库,并且始终追求着良好的软件工程原则,因此,Go是作为编程语言入门的理想选择。 我们用Go语言(其他大部分语言也如此)编写软件的流程通常非常简单: 收集需求 寻找解决方案 编码实现方案 将源码编译成可执行程序 测试程序,保证程序运作良好 这个流程是可迭代的(需要反复进行),并且部分环节经常重叠。但在我们开始编写第一个Go程序之前,我们需要先理解一些概念。 原文地址: http://www.zingscript.com/translate/golang-book 来源: oschina 链接: https://my.oschina.net/u/1441707/blog/194077

【原创翻译】《GO语言编程入门》

烈酒焚心 提交于 2020-10-29 01:54:34
本人在对CALEB DOXSEY写的《An Introduction To Programming In GO》进行中文翻译, 英文版 地址为: http://www.golang-book.com/ 翻译的内容将陆续地添加进来,并在本页面进行链接更新。 书籍内容的中文目录如下: 目录: 准备工作 文件与文件夹 命令行终端 文本编辑器 GO语言工具 你的第一个程序 如何阅读一个GO程序 习题 类型 数值(number) 字符串(string) 布尔值(boolean) 习题 变量 如何命名变量 作用域 常量 定义多个变量 代码例子 习题 控制结构 for if switch 习题 数组、数组切片、map 数组(array) 数组切片(slice) map 习题 函数 你的第二个函数 多参数返回 可变参数函数 闭包 递归 defer、panic和recover 习题 指针 *和&操作符 new 习题 结构(struct)与接口(interface) 结构(struct) 方法(method) 接口(interface) 习题 并发 协程(goroutine) 通道(channel) 接口(interface) 习题 包(package) 创建包 文档 接口(interface) 习题 测试 习题 核心包 strings(字符处理) io(输入输出) os(文件系统) errors

【原创翻译】Go语言工具(Go tools)

五迷三道 提交于 2020-03-03 00:52:54
Go是一种编译型语言,源码(你写的代码)被翻译成计算机可以理解的语言。因此在你写Go程序之前,我们需要Go语言的编译器。 安装器将自动为你安装Go。我们将使用Go语言的版本v1.2。(更多的信息可以在 http://www.golang.org 上查找) 让我们保证一切都正常运作。打开终端并输入以下命令: go version 你将会看到: go version go1.2 你的版本可能会有些不同。如果系统表示你的指令不存在,请重启你的计算机。 Go语言的工具包由一组命令和子命令组成。你可以通过以下方法查看可用的命令: go help 我们将在后面的章节讲解如何使用它们。 原文地址: http://www.zingscript.com/translate/golang-book 来源: oschina 链接: https://my.oschina.net/u/1441707/blog/194103

【原创翻译】如何命名变量

感情迁移 提交于 2020-03-03 00:48:28
恰当地命名变量,是软件开发的重要组成部分。变量名称必须由字母开头,其后可以含有字母、数字和_(下划线)。Go编译器并不关注你怎么命名变量,它的命名方式只对你(或其他人)有意义。尽可能地选择贴近变量含义的名称。假设有如下代码: x := "Max" fmt.Println("My dog's name is", x) 在这个例子中,x不是一个很好的变量名称。更好的名称也许是: name := "Max" fmt.Println("My dog's name is", name) 甚至: dogsName := "Max" fmt.Println("My dog's name is", dogsName) 在最后一个例子中,我们利用了“驼峰式”变量名来连接多个单词。第一个单词的首字母是小写,其后单词的首字母是大写,其他所有字母都是小写。 原文地址: http://www.zingscript.com/translate/golang-book 来源: oschina 链接: https://my.oschina.net/u/1441707/blog/196173

【原创翻译】数值(number)

北城以北 提交于 2020-03-03 00:47:55
Go有很多种表示数值的类型。通常来说,我们将数值分成两类:整数和浮点数。 整数 整数——跟数学意义上的整数一样——没有小数部分(...,-3,-2,-1,-,1,2,3,...)。但不像我们用10进制表示整数,计算机用2进制表示。 我们十进制系统又10种数字位组成。当一个位上的10种数字位都表示完了,我们在下一位上用更大的数字进位。比方说9后面是10,99后面是100。计算机的做法也一样,但它们没有10个数字位,只有2个。所以计算机的计数会像这样:0、1、10、11、100、101、110、111,如此类推。另一个不同之处是,计算机里所有的整数都有一个明确的尺寸。它们只为确定位数的数据分配空间。所以4位的整数看起来会像:0000、0001、0010、0011、0100。当空间不够用的时候,计数将循环,从头计算(会发生很些很奇怪的行为)。 Go的整数类型有:uint8、uint16、uint32、uint64、int8、int16、int32和int64。8、16、32、64告诉我们每种类型的位数。uint的意思是“无符号整数”,而int是“有符号整数”。无符号整数只包含零和正整数。除此还有两种类型的别名:byte跟unit8是一样的,rune跟int32是一样的。字节(byte)是计算机中极普遍的衡量单位(1 byte = 8 bits,1024 bytes = 1

【原创翻译】布尔值(boolean)

孤人 提交于 2020-03-03 00:47:36
布尔值(以George Boole的名字命名)代表一位整数,用来表示真或者假(开或者关)。布尔值有三种逻辑运算符: && 与 || 或 ! 非 以下是一个使用例子: func main() { fmt.Println(true && true) fmt.Println(true && false) fmt.Println(true || true) fmt.Println(true || false) fmt.Println(!true) } 运行这个程序将会输出: $ go run main.go true false true true false 我们常使用真值表来定义运算符的结果: 表达式 值 true && true true true && false false false && true false false && false false 表达式 值 true || true true true || false true false || true true false || false false 表达式 值 !true false !false true 最简单的类型都被包含在了Go语言中,形成了建立后续类型的基础。 原文地址: http://www.zingscript.com/translate/golang-book 来源: oschina 链接:

【原创翻译】如何阅读一个GO程序

牧云@^-^@ 提交于 2020-03-03 00:47:02
让我们更细致地看看这个程序。Go程序是从上至下、从左到右阅读的(就像看书一样)。第一行是这样的: package main 这一行叫做“包的声明”。每一个Go程序文件必须先进行包的声明。包是Go程序组织和复用代码的方式。Go程序分两种:可执行程序和库程序。可执行程序是我们可以在终端直接运行的程序(在Windows系统里,它们的后缀是.exe)。库程序是我们打包在一起的代码集合,以供其他程序使用。我们日后将深入谈到库程序,而现在我们只需要确保这一行代码必须包含在你写的所有程序中。 接下来的一行是空行。计算机用一个(或多个)特殊字符代表空行。换行、空格、制表符都被认为是空字符(因为我们看不见它们)。Go语言通常不关注空字符,我们只是用它让程序看起来更方便于阅读(你也可以删除这一个空行,这不会影响程序的运行)。 然后我们看到: import "fmt" import关键字用于将其他程序包引入到我们的程序中。fmt包(format的缩写)是用于将我们的输入输出内容格式化的。鉴于我们刚才提到关于包声明的内容,你觉得在fmt包的文件中,第一行写着的是什么呢? 我们发现fmt被双引号""包围着。像这样使用双引号的作用是声明字符串字面量,它是一种表达式。在Go语言中,字符串代表着一串具有明确长度的字符(字母、数字、符号等等)。我们将在下一章更详细地讲解字符串,而现在我们只需要记得一个重要的事情

【原创翻译】字符串(string)

 ̄綄美尐妖づ 提交于 2020-03-03 00:42:22
正如我们第二章提到的,字符串是一组具有特定长度的、描述文本的字符序列。通常来说,字符串里的字符各占用一个字节(如中文之类的其他语言的字符占用一个以上的字节)。 字符串字面量由双引号"Hello World"或者反引号`Hello World`创建。它们的区别在于,双引号不能换行但可以有特殊字符转移。比方说\n会被替换成换行,而\t会被替换成制表符。 常用的字符串操作包括获取字符串长度:len("Hello World") ,获取字符串中的特定字符:"Hello World"[1],将两个字符串连接起来:"Hello "+" World"。让我们修改之前的程序来做个测试: package main import "fmt" func main() { fmt.Println(len("Hello World")) fmt.Println("Hello World"[1]) fmt.Println("Hello " + "World") } 需要注意以下事情: 空格也占用字符,所以字符串的长度是11而不是10,打印的第三行是"Hello "而不是"Hello"。 字符串的字符从0开始索引,而不是1。[1]以为着取第二个元素,而不是第一个。当你运行程序的时候,你会注意到你看见的是101而不是e。这是因为字符是用字节表示的(字节是整数型的)。 有一种表示字符串索引的方式:"Hello

CENTOS下出现“DEVICE ETH0 DOES NOT SEEM TO BE PRESENT”

北城以北 提交于 2019-12-07 18:44:45
在VMWare中克隆出CentOS中镜像,重新生成了mac地址,启动镜像并启动网络,会出现以下错误: service network restart Shutting down loopback insterface: [ OK ] Bringing up loopback insterface: [ OK ] Bringing up interface eth0: Device eth0 does not seem to be present,delaying initialization. [FAILED] 默认的第一个网络eth0无法启动,主要成因是:mac地址已变更,无法直接用镜像源的配置启动网络。 有两个关键文件需要关注: 1.系统自动生成的网卡硬件信息文件 /etc/udev/rules.d/70-persistent-net.rules 2.系统自动生成的网卡运作配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 *其中eth0可能根据网卡数量会自动生成eth1,eth2…等文件 解决办法: 删除70-persistent-net.rules文件中多余的配置条目,将VMWare中生成的mac地址填入(甚至直接删掉这个文件也可以,系统会在启动时自动生成) 修改ifcfg-eth0中的mac地址 两个文件中的内容匹配

PHPMYADMIN导入数据库文件过大的解决方法

。_饼干妹妹 提交于 2019-11-27 10:24:47
在phpmyadmin中显示上传文件最大问8M,可我的单个sql文件超过50M,尝试上传,上传依然可以进行,但上传到8M即操作终止,phpmyadmin提示上传失败。 该问题实际上是php的配置问题,在php.ini中有两个参数需要关注: upload_max_filesize 8m post_max_size 8m upload_max_filesize为上传文件的最大尺寸,post_max_size为POST数据的最大尺寸,在php实现上post_max_size>=upload_max_filesize。 问题解决: 1.把upload_max_filesize和post_max_size改为足够的大小,如: upload_max_filesize 100M post_max_size 100M 2.保证 post_max_size>=upload_max_filesize 延伸配置: 上传文件的实现可能还跟以下php配置参数有关: 开放上传文件功能: file_uploads on 上传文件的临时文件夹: upload_tmp_dir 最大执行时间:(如果文件过大,将会发生php执行超时) max_execution_time 最大输入时间:(接收数据阶段的最大时间) max_input_time 最大内存限制:(每个php请求的最大内存空间) memory_limit /