教程中有几点可以让你自己离开,如果你不知道我没有线索或链接。所以我很抱歉这些长度:
Try printing needInt(Big) too
我猜测的内容比常量更少?
the { } are required.
(Sound familiar?)
提到哪种语言?
(And a type declaration does what you'd expect.)
为什么我们需要单词type
和单词struct
?我应该期待什么?
为什么构造函数中隐含零?这听起来像Go的危险设计选择。是否有PEP或其他任何超出http://golang.org/doc/go_faq.html的内容?
Make
?有施工人员吗? new
和make
之间的区别是什么?
delete
来自哪里?我没有导入它。
%v
格式化程序代表什么?值?
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)
}
函数失败时返回错误值?我必须通过错误检查限定每个函数调用?当我编写疯狂的代码时,程序的流程是不间断的?例如。 Copy(only_backup, elsewhere);Delete(only_backup)
和复制失败....
为什么他们会这样设计?
答案 0 :(得分:17)
#15:
我猜int的允许位数比常数少?
是的,确切地说。根据规范,"numeric constants represent values of arbitrary precision and do not overflow",而type int
has either 32 or 64 bits。
#21:
提到哪种语言?
无;它暗指#16,用同样的话来讲述for
- 循环。
#25:
a type declaration does what you'd expect
有点不幸,我同意(因为它假定读者期望的太多......)但这意味着你要定义一个结构(使用struct
关键字)并使用type Vertex
部分将类型名称“Vertex”绑定到它(请参阅http://golang.org/ref/spec#Type_declarations)
#28:
未初始化的结构被归零的事实在许多情况下确实非常有用(许多标准结构如缓冲区也使用它)
它不仅仅隐含在构造函数中。看看这个
var i int; fmt.Println(i)
打印出0
。这类似于java,其中基本类型具有隐式默认值。布尔值为假,整数为零等,The spec on zero values.
#30:
new
分配内存并返回指向它的指针,而make
是一个仅用于切片,地图和通道的特殊函数。
有关make
与new
#33:
delete
,如append
或copy
,是该语言的基本操作符之一。请在以下位置查看完整列表:http://golang.org/ref/spec#Predeclared_identifiers
#36:
是的,%v
代表“价值”。请参阅http://golang.org/pkg/fmt/
#47:
试试这个:
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代码变得冗长,但幸运的是 您可以使用一些技术来最小化重复的错误处理。
答案 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库中的错误,而不是自己打扰它,但是一旦我掌握了它,我个人觉得我有更好(更可读)的错误检查。
我可以说的是,当我做错了,感觉就像重复的错误处理一样,觉得没必要。当我最终开始做对了......好吧,我刚刚在上面说过。