기본 콘텐츠로 건너뛰기

7월, 2015의 게시물 표시

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

go 언어는 자바처럼 오버로드가 없지만 함수를 매개변수로 전달할 수 있어  반복적인 데이터 타입에 대한 연산을 내부적으로 작성할 수 있다.
데이터 타입에 리스트가 없지만 리스트의 특징인 다양한 데이터를 슬라이스로 받아서 각 리스트의 요소에 맞춰 실질적인 함수 처리가 가능하다.
go 언어의 특징이 함수도 하나의 데이터타입으로 정의가 가능하고 함수를 변수나 매개변수에 전달할 수 있으므로 다양한 요건을 처리할 수 있다.

packagemainimport("fmt" )

//리스트 타입을 정의 typeList[]interface{}//리스트에 대한 메소드 정의func(lList)Accumulate(fOperation)interface{}{res:=0for_,v:=rangel{ifi,ok:=v.(int);ok{res=f(res,i)continue}iflst,ok:=v.(List);ok{res=f(res,lst.Accumulate(f).(int))}}returnres}//함수 타입을 정의//함수를 매개변수 등으로 전달하기 위한 타입 정의typeOperationfunc(int,int)int// 매개변수로 전달되는 함수 정의funcadd11(x,yint)int{returnx+y} funcmain(){

l:=List{1,2,3,4}fmt.Println("interfacetypeassertiontypelist",l)fmt.Println("listsum",l.Accumulate(add11).(