什么是“环球之旅”试图说什么?

时间:2012-09-21 12:48:00

标签: go

教程中有几点可以让你自己离开,如果你不知道我没有线索或链接。所以我很抱歉这些长度:

http://tour.golang.org/#15

Try printing needInt(Big) too

我猜测的内容比常量更少?


http://tour.golang.org/#21

the { } are required.

(Sound familiar?)

提到哪种语言?


http://tour.golang.org/#25

(And a type declaration does what you'd expect.)

为什么我们需要单词type和单词struct?我应该期待什么?


http://tour.golang.org/#28

为什么构造函数中隐含零?这听起来像Go的危险设计选择。是否有PEP或其他任何超出http://golang.org/doc/go_faq.html的内容?


http://tour.golang.org/#30

Make?有施工人员吗? newmake之间的区别是什么?


http://tour.golang.org/#33

delete来自哪里?我没有导入它。


http://tour.golang.org/#36

%v格式化程序代表什么?值?


http://tour.golang.org/#47

panic: runtime error: index out of range

goroutine 1 [running]:
tour/pic.Show(0x400c00, 0x40ca61)
    go/src/pkg/tour/pic/pic.go:24 +0xd4
main.main()
    /tmpfs/gosandbox-15c0e483_5433f2dc_ff6f028f_248fd0a7_d7c2d35b/prog.go:14 +0x25

我想我以某种方式破了......

package main

import "tour/pic"

func Pic(dx, dy int) [][]uint8 {
    image := make([][]uint8, 10)
    for i := range image {
        image[i] = make([]uint8, 10)
    }
    return image
}

func main() {
    pic.Show(Pic)
}

http://tour.golang.org/#59

函数失败时返回错误值?我必须通过错误检查限定每个函数调用?当我编写疯狂的代码时,程序的流程是不间断的?例如。 Copy(only_backup, elsewhere);Delete(only_backup)和复制失败....

为什么他们会这样设计?


2 个答案:

答案 0 :(得分:17)

试试这个:

func Pic(dx, dy int) [][]uint8 {
    image := make([][]uint8, dy) // dy, not 10
    for x := range image {
        image[x] = make([]uint8, dx) // dx, not 10
        for y := range image[x] {
            image[x][y] = uint8(x*y) //let's try one of the mentioned 
                                             // "interesting functions"
         }    
    }
    return image
}
  • #59

      

    语言的设计和惯例鼓励您明确地使用   检查它们发生的错误(与...中的约定不同)   抛出异常的其他语言,有时会捕获它们)。   在某些情况下,这会使Go代码变得冗长,但幸运的是   您可以使用一些技术来最小化重复的错误处理。

    (引自Error handling and Go

答案 1 :(得分:3)

I'm guessing int's are allowed less bits than constants?

是的,数字常量是高精度值。任何语言的int都不接近其他数字类型的精度。

Which language is alluded to?

没有任何线索,但它是从C和Java向后的,需要( ){ }是可选的。

Why do we need the word type and the word struct? What was I supposed to expect?

如果您熟悉C语言,那么它就能满足您的期望。

Why implicit zeroes in the constructor?

它不仅仅隐含在构造函数中。看看这个

var i int
fmt.Println(i)

打印出0。这类似于java,其中基本类型具有隐式默认值。布尔值是假的,整数是零等等。

Make? Are there constructors? What's the difference between new and make?

make接受其他参数来初始化数组,切片或贴图的大小。另一方面,new只返回指向类型的指针。

type Data struct {}
// both d1 and d2 are pointers
d1 := new(Data)
d2 := &Data{}

至于are there constructors?,只有你制作并引用它们。这通常是如何在Go中实现构造函数。

type Data struct {}

func NewData() *Data {
    return new(Data)
}

What's the %v formatter stand for? Value?

是的

I return error values when a function fails? ... Why would they design it like that?

起初我的感觉一样。我的意见虽然改变了。如果你愿意,你可以忽略std库中的错误,而不是自己打扰它,但是一旦我掌握了它,我个人觉得我有更好(更可读)的错误检查。

我可以说的是,当我做错了,感觉就像重复的错误处理一样,觉得没必要。当我最终开始做对了......好吧,我刚刚在上面说过。