《Go程序设计语言》中文版翻译错误

《The Go programming language》是一本写的很好的书,我本来买了中文版看,但是翻了几页,实在是看不懂。于是买了一本英文版来对照着看,本来以为看英文可能会比较吃力,但是没想到英文读起来要比中文流畅的多。同时还发现中文版翻译中的好多错误,在此记录一下。

  1. page101, “我们可以忽略掉整个日志”,应该为“我们可以忽略掉整个错误”

  2. page101 “进行错误检查之后,检测到失败的情况往往都在成功之前” 应该为“进行错误检查之后,首先进行错误处理,然后再处理正常的逻辑”

  3. page101 “之后跟着实际的函数体一直到最后” 后面一句漏翻译了“以最大限度的减少缩进”。

  4. page101 “偶尔, 一个程序必须针对不同各种类的错误采取不同的措施” 应该为“然而,程序有时候需要根据发生的不同种类的错误采取不同的处理方式”

  5. 英文版P132, 中文版P102
    “而且它们可以赋给 变量或者传递或者从其他函数返回”, 应该为:
    “而且,它们可以赋值给变量或者传递给其他函数,或者从其他函数返回”

  6. 英文版P133, 中文版P103
    “这样的代码组织给调用者提供了很多的灵活性” 建议改为:
    “这样的代码组织给调用者提供了极大的灵活性”

  7. 英文版30, 中文版22
    “包级别的初始化在main开始之前进行” 应该为:
    “包级别的变量初始化在main函数开始执行之前进行”

“局部变量初始化和声明一样在函数执行期间进行” 应该为:
“局部变量的初始化在函数遇到其声明语句的时候进行”

  1. 英文版31, 中文版23
    “短变量声明不需要声明所有在左边的变量” 建议改为:
    “短变量声明不需要声明所有在:=左侧的变量”

“如果一些变量在同一个词法块中声明, 那么对于这些变量,短声明的行为等同于赋值” 应改为:
“如果某些变量已经在同一个词法块中声明过了,那么对于这些变量,短声明的行为等同于赋值”

already 没有翻译造成中文意思错误

  1. 英文版P32, 中文版P24
    “变量有时候使用一个地址化的值” 应为:
    “变量有时候被描述为可寻址的值”

  2. 英文版P35, 中文版P27
    “这个规则有一个例外:两个变量的类型不携带任何信息且是零值, 例如struct{}或者[0]int,当前的实现里面,它们有相同的地址” 这一段翻译完全错误,英文原文是
    “There is one exception to this rule: two variables whose type carries no information and is therefore of size zero, such as struct{} or [0]int, may, depending on the implementation, have the same address.”
    应该翻译为:
    “这个规则有一个例外:两个变量的类型不携带任何信息,因此其size是0,例如struct{}或者[0]int, 可能具有相同的地址,这取决于具体实现。”

  3. 英文版P35,中文版P27
    “每次执行声明语句时创建一个新的实体,变量一直生存到它变得不可访问,这时它占用的存储空间被回收” 应该为:
    “每次执行声明语句时创建一个新的实例,变量一直生存到它变得不可访问为止,这时它占用的内存可能会被回收”

两字之差,意思就不一样了。一个变量没有被引用了,那么它的生命周期结束了,但是并不一定会被马上回收,可能会有一些延时,这个要看具体的垃圾回收算法是如何实现的。

  1. 英文版P36, 中文版P26
    “即使包含它的循环已经返回,它的存在还可能延续” 应该为:
    “即使包含它的函数已经返回,它的存在还可能延续”

13.英文版P36,中文版P26
“编译器可以选择使用堆或栈上的空间来分配” 翻译错误
原文是
“A compiler may choose to allocate local variables on the heap or on the stack but,…”
也就是说,编译器可以选择在栈上或者堆上分配局部变量,注意是局部变量,并没有提到包级变量

14.英文版P36,中文版P26

“令人惊奇的是,这个选择不是基于使用var或new关键字来声明变量” 翻译错误
在go中,new是一个预定义的函数,并不是关键字,所以在英文原文中,刻意避免了使用keyword这个说法
英文原文:
“this choice is not determined by whether var or new was used to declare the variable.”
应该翻译为:
“这种选择不是根据是否使用了var或new来确定的”

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值