[ Golang을 배워보자! ] A Tour of Go - 36 연습: 슬라이스 ( range의 활용 )steemCreated with Sketch.

in #golang7 years ago (edited)

안녕하세요.

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할수 있는게 상당히 편리하기 때문에.
까먹지 말고 활용하도록 해야겠습니다 ㅎㅎ