Giter Club home page Giter Club logo

gopl-zh's People

Contributors

chai2010 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gopl-zh's Issues

1.1hello world勘误

Go语言在代码格式上采取了很强硬的态度。gofmt工具把代码格式化为标准格式(译注:这个格式化工具没有任何可以调整代码格式的参数,Go语言就是这么任性),并且go工具中的fmt子命令会对指定包, 否则默认为当前目录, 中所有.go源文件应用gofmt命令。

上面一段话中 并且go工具中的fmt子命令会对指定包, 否则默认为当前目录, 中所有.go源文件应用gofmt命令这句话的意思不明确 并且目录, 中所有的.go源文件这个地方的逗号应该是没有的

一些语句不通顺的地方(估计是笔误)

  • 8.4 Page 228 第一行 "那么channels它们之间的通信机制" might change to "那么channels则是它们之间的通信机制"
  • 8.4.4 Page 233 第一行 "向缓存Channel的发送操作就是向内部缓存队列的尾部插入原因" might change to "向缓存Channel的发送操作就是向内部缓存队列的尾部插入元素"

[error report] 第六章第五节 bit数组中代码示例有处笔误

章节地址
文中有处代码示例,关于给_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]
*/

[error report] 第七章第五节 示例错误,可能与go版本有关

$ 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呢?不应该是一个指向新分配的缓冲区的指针吗?

0.1 不通顺

编程语言的演化就像生物物种的演化类似 -> 编程语言的演化跟生物物种的演化类似

gopl-zh ch8问题反馈

“因此调用者何被调用者将引用同一个channel对象”中“何”是否为“和”;
“如果两个channel引用的是相通的对象”中“通”是否为“同”。

gopl-zh ch14问题反馈

看了下原版gopl的errata,2016-02-01之后又更新了11条呢,希望可以同步到附录以及对应章节的内容。

233333因为没有附录的issue所以就自己建了一个,之后关掉吧。

错别字

302页,“多少服务端 C 和 C 艹程序员为此尽折腰”

应改为“多少服务端 C 和 C++程序员为此竟折腰”

gopl-zh ch4问题反馈

译文中描述:map中所有的key都有相同的类型,所有的value也有着相同的类型,但是key和value之间可以是不同的数据类型,
这个在目前是错误的,map[string]interface{} 或者 map[interface{}]interface{} 这种就可以是的key的类型可以不同,value的类型也可以不同。

ch7-07可能有一个错字

发现下面是专用的提交嘛,那我写下面去吧,管理人员关闭这个issues吧

在下面的程序中,我们创建一个ServeMux并且使用它将URL和相应处理/list和/price操作的handler联系起来,这些操作逻辑都已经被分到不同的方法中。然后我门在调用ListenAndServe函数中使用ServeMux为主要的handler。

我的理解应该是我们

gopl-zh ch5.8问题反馈

5.8. Deferred函数
示例
gopl.io/ch5/trace
正文中的代码注释错误的换行了。
还有单词拼写错误
parentheses 应该为
parenthesis

关于 2.7 节第三段词法块部分的翻译修正

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)的概念推广到包括其他声明的组群(群组),这些声明在代码中并未显式地使用花括号包裹起来,我们称之为词法块

ch6.5 问题反馈

6.5. 示例: Bit数组

练习 6.3: (*IntSet).UnionWith会用|操作符计算两个集合的交集

UnionWith 是计算两个集合的并集,请确认

1.6 Fetching URLs Concurrently

练习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没有翻译

gopl-zh ch6问题反馈

ch6-02

原著中 的 named type 应该是 用 type 命名过的类型,是与内建类型相对而言的,翻译有些歧义,感觉按中文表达应该是类似于 ‘自定义类型’ 或者 ‘命名类型’ 这种意思 。
stackoverflow上的解释

ch3.2翻译错误

【原文】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值。

建议增加制作好的pdf

想要打印成纸质书,得先制作成pdf,
需要安装node,gitbook
而且, 用gitbook制作pdf时, 会报错:
Cannot find module 'internal/util/types'
...
要解决这个问题,又得用不少时间精力
所以建议增加制作好的pdf,直接下载下来就能看,
今天一上午被这个问题搞得很累,还没解决...

gopl-zh 8.4.2 问题反馈

在gopl.io/ch8/pipeline2这个代码实例下边的文字说明当中,”对于每个打开的文件,都需要在不使用的使用调用对应的Close方法来关闭文件。”,想要表达的应该是“都需要在不使用的_时候_调用”

错别字纠正

中译本CH2.7中:
"由于当前的编译器会检测到局部声明的cwd并没有使用,然后报告这可能是一个错误,但是这种检测并不可靠。因为一些小的代码变更,例如增加一个局部cwd的打印语句,就可能导致这种检测失效。"
这里的”本“应改成"被“

什么时候能好呢?

非常非常的感谢你们的翻译。
近段时间正在看这本书,今天突然就不能看了。请问什么时候可以恢复呢?

2.3.4 变量的生命周期处有语句不通顺处

[error report] 第二章第三节:2.3.4 变量的生命周期处有语句不通顺处:
原句:那么垃Go语言的自动圾收集器是如何知道一个变量...
应该是:“垃”字应该在“自动”和“圾收集器”中间。

CH12.8 显示一个类型的方法集

  1. 每次v.Method(i)方法调用都返回一个reflect.Value以表示对应的值(§6.4),也就是一个方法是帮到它的接收者的。——也就是一个方法是帮到它的接收者。什么意思,感觉这段话翻译的没看懂,能否加个译注。
    2.(我们之类没有演示)——是不是打错字了,是不是 “我们这里没有演示”。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.