기본 콘텐츠로 건너뛰기

7월, 2015의 게시물 표시

golang에서 리스트 데이터 타입을 만들고 리스트 요소들을 합산하는 메소드 처리하기

go 언어는 자바처럼 오버로드가 없지만 함수를 매개변수로 전달할 수 있어  반복적인 데이터 타입에 대한 연산을 내부적으로 작성할 수 있다. 데이터 타입에 리스트가 없지만 리스트의 특징인 다양한 데이터를 슬라이스로 받아서 각 리스트의 요소에 맞춰 실질적인 함수 처리가 가능하다. go 언어의 특징이 함수도 하나의 데이터타입으로 정의가 가능하고 함수를 변수나 매개변수에 전달할 수 있으므로 다양한 요건을 처리할 수 있다. package main import (          "fmt"    ) //리스트 타입을 정의 type List [] interface {} //리스트에 대한 메소드 정의 func (l List) Accumulate(f Operation) interface {} {      res := 0      for _, v := range l {          if i, ok := v.( int ); ok {              res = f(res, i)              continue          }          if lst, ok := v.(List); ok {              res = f(res, lst.Accumulate(f).( int ))          }      }      return res } //함수 타입을 정의 //함수를 매개변수 등으로 전달하기 위한 타입 정의 type Operation func ( int , int ) int // 매개변수로 전달되는 함수 정의 func add11(x, y int ) int {      return x + y } func main() { l := List{ 1 , 2 , 3 , 4 }      fmt.Println( &q