선수로 산다, 때론 좋은 코치로

[golang] A Tour of Go - 36 연습 문제 본문

개발 관련/go

[golang] A Tour of Go - 36 연습 문제

godsman 2018. 2. 1. 21:26

A Tour of Go - 36 연습 문제

https://go-tour-kr.appspot.com/#36

Exercise: Slices

https://tour.golang.org/moretypes/18


Pic이라는 함수를 구현합니다. 이 함수는 dy개 만큼의 길이를 가지는 슬라이스를 리턴해야 하는데, 각각의 요소들은 또한 dx 개의 8비트 부호없는 8비트 정수 타입을 가지는 슬라이스입니다. 

(여러분은 [][]uint8 슬라이스 내에서 사용할 각각의 []uint8 슬라이스를 할당하기 위해 루프를 활용해야 할 것입니다.)

(타입 간의 변환을 위해서는 uint8(intValue)을 사용합니다.)


package main

import "code.google.com/p/go-tour/pic"


func Pic(dx, dy int) [][]uint8 {

   return arr

}


func main() {

    pic.Show(Pic)

}

A Tour of Go 를 살펴보다가 처음 본 연습문제입니다. 이후에 가끔 연습문제가 나옵니다.

C/C++을 사용한 지 시간이 좀 흘렀는데도 문제를 보니 이중 포인터 생각이 나서 풀어 봤습니다.


문제의 순서대로 코딩합니다.

dy개 만큼의 길이를 가지는 슬라이스를 만들어라. 

var arr = make([][]unit8, dy)

각 요소들은 dx개의 8비트 부호없는 8비트 정수 타입을 가지는 슬라이스. 

arr[y] = make([]uint8, dx)

즉 dy의 슬라이스를 먼저 생성하고, 각 요소마다 dx의 슬라이스를 생성합니다.

func Pic(dx, dy int) [][]uint8 {

    var arr = make([][]uint8, dy)

    

    for y := range arr { 

        arr[y] = make([]uint8, dx)

        

        for x := range arr[y] {

            arr[y][x] = uint8(x^y)

        }

    }

    return arr

}


Go 언어로 C에서도 잘 사용하지 않았던 이런 로직을 사용할지는 모르겠습니다.


A Tour of Go 예제 관련


Comments