2015-01-16 2 views
0

사용자 정의 유형에 이르기까지는 Ranger 인터페이스가없는 것으로 보입니다. 비슷한 것이 있습니까? 또는 유형을 슬라이스 나 맵으로 변환하는 메소드를 만들어야합니까?`type x [] struct` 또는`type y struct` 이상의 범위는 무엇입니까?

편집 : 당연히 x를 [] 구조체로 변환 할 수는 있지만 근본적인 x 유형을 변경하는 것이 어려워집니다.

+0

당신이 할 수 이 문제의 예를 게시 하시겠습니까? 당신이 묻는 것을 시각화하는 데 어려움을 겪고 있습니다. – abalos

+2

'for' 문의 범위 절이 사용자 정의 유형에도 적용됩니다. [Go Playground에서의이 예] (http://play.golang.org/p/HSDGKWYhLq)를 확인하십시오. – icza

+2

@icza "사용자 정의"유형이 이름이 변경된 원시 유형 인 경우에만 "범위 지정"할 수 있습니다. – fuz

답변

2

for 변형의 range 변형은 조각 모음, 맵, 문자열 또는 채널의 이름이 변경되지 않은 사용자 지정 모음으로 확장 할 수 없습니다. Ranger 인터페이스 나 그와 같은 것이 없습니다. 사용자 정의 형식을 통해 다양하고 싶다면,이 같은 for -loop을 사용하는 것이 좋습니다 : Next()이 방법은

for x, eof := col.Next(); x, eof = col.Next(); !eof { 
    // ... 
} 

을 그 같은 서명하여 컬렉션을 반복 :

func (*MyCollection) Next() (ItemType x, bool eof) 
관련 문제