2013-07-02 5 views
3

푸시 및 팝 조작과 함께 LIFO 스택 컨테이너를 사용해야하지만 container 패키지에는 패키지가 없습니다. 모든 프로그래머가 임시로 작성해야합니까? 아니면 다른 데이터 구조를 스택으로 사용할 수 있습니까 (예 : 파이썬의 목록)?이동 중에 LIFO 컨테이너

+0

관련 : http://stackoverflow.com/questions/2818852/can-anybody-suggest-go-lang-container-for-simple-and-fast-fifo-stack – nemo

답변

5

Go 또는 표준 라이브러리에는 기본 제공 스택 유형이 없습니다. 그러나, 당신은 슬라이스에 Push와 Pop 메소드를 추가 할 수 있습니다 (파이썬의리스트에있는 기존 메소드와 다르지 않습니다).

type Stack []YourType 

func (s *Stack) Push(v YourType) { 
    *s = append(*s, v) 
} 

func (s *Stack) Pop() YourType { 
    ret := (*s)[len(*s)-1] 
    *s = (*s)[0:len(*s)-1] 
    return ret 
} 

매우 간단

+0

그러나 부분적으로 만 대답. – nemo

+0

@nemo 슬라이스/포인터 의미에 대한 지나치게 많은 설명이 부족하다는 느낌이 들었습니다. – cthom06

+0

흠, 나는 네가 직접 구현해야하는 것과 같은 것을 기대했을 것이다. 예 : ....'. 단지 코드를 게시하면 질문을 읽지 않고 코드를 던지려는 의도가 생깁니다. 하지만 아마 나야 – nemo

1

stdlib에 container 패키지가 없습니다. 그러나 LIFO는 스택 일 뿐이며, 예를 들어 조각으로 쉽게 모델링 할 수 있습니다. 따라서 stdlib LIFO 컨테이너가 없습니다.

+1

이 하나 - http://golang.org/pkg/container/ – Lazin

+0

@ Lazin : 패키지가 아닙니다. – zzzz

관련 문제