step 35 in the tour of Go 연습 문제가 있습니다.var가있는 변수와 var가없는 변수를 선언하는 경우의 차이점
여기처럼 내 코드가 어떻게 표시되는지를 보여줍니다 :
package main
import "code.google.com/p/go-tour/pic"
func Pic(dx, dy int) [][]uint8 {
var pic = make([][]uint8, dy)
for y := 0; y < dy; y++ {
pic[y] = make([]uint8, dx)
for x := 0; y < dx; x++ {
pic[y][x] = uint8(x*y)
}
}
return pic
}
이 솔루션을 찾고 때, 나는 완벽하게 작동 PeterSO's 코드를 발견
func main() {
pic.Show(Pic)
}
func Pic(dx, dy int) [][]uint8 {
pixels := make([][]uint8, dy)
for y := 0; y < dy; y++ {
pixels[y] = make([]uint8, dx)
for x := 0; x < dx; x++ {
pixels[y][x] = uint8(x * y)
}
}
return pixels
}
내가 볼 수있는 유일한 차이점, 난 것입니다 그의 코드는 :=
지정을 사용하지만 var
키워드를 사용하여 pic
변수를 정의합니다. 자, 왜 내 코드가 작동하지 않습니까?
'var pic = make ([] [] uint8, dy)'가 유효하고 유형이 유추됩니다. 'var pic [] [] uint8 = make ([] [] uint8, dy)'를 쓰지 말고, 유형을 반복하는 것은 불필요합니다. – peterSO
@Laurent : 타입 유추는'='뿐만 아니라'var v = expr'에서도 작동합니다. – zzzz
또한, 함수 정의 밖에서': ='를 사용하여 전역 변수로 만들 수 없다고 생각하면,이 경우'var'을 사용해야합니다. – siritinga