안녕하세요.
golang을 공부중인 jungmu 입니다.
기초를 다지기위해 https://go-tour-kr.appspot.com/ 에서 공부를 하던중 36번 문제가 배울게 좀 있어보여서 해설을 포스팅 해 보려고합니다.
문제는 위와 같습니다.
여기서 Pic 함수를 구현하는게 목표인데요.
아직 go에 익숙하지 않다보니 처음에는
func Pic(dx, dy int) [][]uint8 {
arr := make([][]uint8, dy)
for i := 0; i < dy; i++ {
arr[i] = make([]uint8, dx)
}
for i := 0; i < dy; i++ {
for j := 0; j < dx; j++ {
arr[i][j] = uint8(i^j)
}
}
return arr
}
이와같이 작성하였는데요.
좀더 생각을 해보니 range 를 활용하는게 좋을 것 같아서
func Pic(dx, dy int) [][]uint8 {
arr := make([][]uint8, dy)
for i := range arr {
arr[i] = make([]uint8, dx)
for j := range arr[i] {
arr[i][j] = uint8(i^j)
}
}
return arr
}
이와 같이 수정하였습니다.
처음에 작성한것과 같이 사용해도 문제는 없습니다만,
가독성과 유지보수 성에서 아래쪽이 조금 더 괜찮아 보입니다.
golang에서는 range를 활용해 iterates할수 있는게 상당히 편리하기 때문에.
까먹지 말고 활용하도록 해야겠습니다 ㅎㅎ