golang-china / gopl-zh Goto Github PK
View Code? Open in Web Editor NEW:books: Go语言圣经中文版
Home Page: https://golang-china.github.io/gopl-zh
:books: Go语言圣经中文版
Home Page: https://golang-china.github.io/gopl-zh
https://books.studygolang.com/gopl-zh/ch5/ch5-09.html
第二行:这些运行时错误会引起painc异常。 应该是“panic”
time.Now()方法需要导入time库才能被使用
本人使用 docker 在 aws 上运行了一个 gopl-zh 容器,设置每晚 2:00 克隆仓库并构建一次,力争将最新的文档呈现在大伙儿面前。
镜像地址:https://book.itsfun.top/gopl-zh
项目地址:https://github.com/ykfq/nginx-gopl-zh
有问题欢迎指正,也欢迎大家提 issue。
UNIX=UINX
Go语言在代码格式上采取了很强硬的态度。gofmt工具把代码格式化为标准格式(译注:这个格式化工具没有任何可以调整代码格式的参数,Go语言就是这么任性),并且go工具中的fmt子命令会对指定包, 否则默认为当前目录, 中所有.go源文件应用gofmt命令。
上面一段话中 并且go工具中的fmt子命令会对指定包, 否则默认为当前目录, 中所有.go源文件应用gofmt命令这句话的意思不明确 并且目录, 中所有的.go源文件这个地方的逗号应该是没有的
RT
有问题在这里提出,会尽快修正
RT
有问题在这里提出,会尽快修正
请问怎么在线阅读呢?
章节地址
文中有处代码示例,关于给_IntSet_ 添加的_String_方法,代码如下
// String returns the set as a string of the form "{1 2 3}".
func (s *IntSet) String() string {
var buf bytes.Buffer
buf.WriteByte('{')
for i, word := range s.words {
if word == 0 {
continue
}
for j := 0; j < 64; j++ {
if word&(1<<uint(j)) != 0 {
if buf.Len() > len("{") {
buf.WriteByte('}')
}
fmt.Fprintf(&buf, "%d", 64*i+j)"}")}}
}
}
}
buf.WriteByte('}')
return buf.String()
}
正确的应该是
func (s *IntSet) String() string {
var buf bytes.Buffer
buf.WriteByte('{')
for i, word := range s.words {
if word == 0 {
continue
}
for j := 0; j < 64; j++ {
if word&(1<<uint(j)) != 0 {
if buf.Len() > len("{") {
buf.WriteByte(' ')
}
fmt.Fprintf(&buf, "%d", 64*i+j)
}
}
}
buf.WriteByte('}')
// 个人建议添加下列一行,更加直观看到bit数组中保存的是什么东西
fmt.Fprintf(&buf, "=>%d", *s)
return buf.String()
}
调用代码示例
func main() {
var test = new(IntSet)
test.Add(0)
test.Add(3)
fmt.Println(test)
fmt.Println(test.Has(1))
}
/*
{0 3}=>{[9]}
false
[Finished in 0.4s]
*/
RT
有问题在这里提出,会尽快修正
$ go version
go version go1.5.1 darwin/amd64
测试代码如下
package main
import (
"bytes"
"io"
)
const debug = true
func main() {
var buf *bytes.Buffer
if debug {
buf = new(bytes.Buffer)
}
f(buf)
}
func f(out io.Writer) {
if out != nil {
out.Write([]byte("done!\n"))
}
}
按照7.5.1. 警告:一个包含nil指针的接口不是nil接口,代码应该有panic panic: nil pointer dereference
但是运行结果显示并没有panic
文中当main函数调用函数f时,它给f函数的out参数赋了一个*bytes.Buffer的空指针,所以out的动态值是nil。然而,它的动态类型是*bytes.Buffer,意思就是out变量是一个包含空指针值的非空接口(如图7.5),所以防御性检查out!=nil的结果依然是true。
out的动态值为什么是nil呢?不应该是一个指向新分配的缓冲区的指针
吗?
如题
编程语言的演化就像生物物种的演化类似 -> 编程语言的演化跟生物物种的演化类似
“因此调用者何被调用者将引用同一个channel对象”中“何”是否为“和”;
“如果两个channel引用的是相通的对象”中“通”是否为“同”。
看了下原版gopl的errata,2016-02-01之后又更新了11条呢,希望可以同步到附录以及对应章节的内容。
233333因为没有附录的issue所以就自己建了一个,之后关掉吧。
302页,“多少服务端 C 和 C 艹程序员为此尽折腰”
应改为“多少服务端 C 和 C++程序员为此竟折腰”
RT
有问题在这里提出,会尽快修正
RT
有问题在这里提出,会尽快修正
因各种原因,其中一个地址更新为:http://doc.ruanjiadeng.com/gopl-zh/
译文中描述:map中所有的key都有相同的类型,所有的value也有着相同的类型,但是key和value之间可以是不同的数据类型,
这个在目前是错误的,map[string]interface{} 或者 map[interface{}]interface{} 这种就可以是的key的类型可以不同,value的类型也可以不同。
发现下面是专用的提交嘛,那我写下面去吧,管理人员关闭这个issues吧
在下面的程序中,我们创建一个ServeMux并且使用它将URL和相应处理/list和/price操作的handler联系起来,这些操作逻辑都已经被分到不同的方法中。然后我门在调用ListenAndServe函数中使用ServeMux为主要的handler。
我的理解应该是我们
5.8. Deferred函数
示例
gopl.io/ch5/trace
正文中的代码注释错误的换行了。
还有单词拼写错误
parentheses 应该为
parenthesis
我是个新手,希望能增加go的安装,比如cmd中go命令应该是和安装有关的,谢谢
2.7 作用域 第三段
[现有译文]:
我们可以这样理解,语法块可以包含其他类似组批量声明等没有用花括弧包含的代码,我们称之为语法块。
[英文原文]:
We can generalize this notion of blocks to include other groupings of declarations that are not explicitly surrounded by braces in the source code; we’ll call them all lexical blocks.
现有翻译不太通顺,而且概念上也不对(是词法块不是语法块),英文的意思大概是这样吧:
我们可以把块(block)的概念推广到包括其他声明的组群(群组),这些声明在代码中并未显式地使用花括号包裹起来,我们称之为词法块。
6.5. 示例: Bit数组
练习 6.3: (*IntSet).UnionWith会用|操作符计算两个集合的交集
UnionWith 是计算两个集合的并集,请确认
镜像地址:https://docs.hacknode.org/gopl-zh/ 每天自动检查并更新到最新版本
练习1.10的之前的最后一句话, 有点问题
原文: Having main do all the printing ensures that output from
each goroutine is processed as a unit, with no danger of interleaving if two goroutines finish at the
same time.
翻译: 通过在main函数使用channel 阻塞接受各个goroutine的输出,可以保证每个goroutine下的输出是有序单位,而不用担心当两个goroutines同时而导致的交错选择问题。
ps:练习1.11没有翻译
RT
有问题在这里提出,会尽快修正
RT
有问题在这里提出,会尽快修正
第七章翻译是认真的吗?比机翻还糟糕!
原著中 的 named type 应该是 用 type 命名过的类型,是与内建类型相对而言的,翻译有些歧义,感觉按中文表达应该是类似于 ‘自定义类型’ 或者 ‘命名类型’ 这种意思 。
stackoverflow上的解释
【原文】A point appears farther to the rig ht on the canvas the greater its x value or the smaller its y value. And a point appears farther down the canvas the greater its x value or y value, and the smaller its z value.(原书60页)
【原翻译】画布中从远处到右边的点对应较大的x值和较大的y值。并且画布中x和y值越大,则对应的z值越小。(https://books.studygolang.com/gopl-zh/ch3/ch3-02.html)
【建议翻译】画布中越靠右的点对应着越大的x值或越小的y值。画布中越靠下的的点对应着越大的x值或越大的y值或越小的z值。
Admin http://shinley.com has been fall......
seems like expired?
想要打印成纸质书,得先制作成pdf,
需要安装node,gitbook
而且, 用gitbook制作pdf时, 会报错:
Cannot find module 'internal/util/types'
...
要解决这个问题,又得用不少时间精力
所以建议增加制作好的pdf,直接下载下来就能看,
今天一上午被这个问题搞得很累,还没解决...
RT
有问题在这里提出,会尽快修正
RT
有问题在这里提出,会尽快修正
RT
有问题在这里提出,会尽快修正
在gopl.io/ch8/pipeline2这个代码实例下边的文字说明当中,”对于每个打开的文件,都需要在不使用的使用调用对应的Close方法来关闭文件。”,想要表达的应该是“都需要在不使用的_时候_调用”
RT
有问题在这里提出,会尽快修正
中译本CH2.7中:
"由于当前的编译器会检测到局部声明的cwd并没有本使用,然后报告这可能是一个错误,但是这种检测并不可靠。因为一些小的代码变更,例如增加一个局部cwd的打印语句,就可能导致这种检测失效。"
这里的”本“
应改成"被“
。
非常非常的感谢你们的翻译。
近段时间正在看这本书,今天突然就不能看了。请问什么时候可以恢复呢?
如题
RT
有问题在这里提出,会尽快修正
感觉有点宗教意味。本身有些狂热GO粉就被人说成是宗教分子,还取这样的标题。取个正常点的名字不是挺好吗?
[error report] 第二章第三节:2.3.4 变量的生命周期处有语句不通顺处:
原句:那么垃Go语言的自动圾收集器是如何知道一个变量...
应该是:“垃”字应该在“自动”和“圾收集器”中间。
RT
有问题在这里提出,会尽快修正
感谢您的翻译。。。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.