GO에서 FIFO/QUEUE 구현 : 효율적인 스토리지를위한 안내서
Go는 각각 세 가지 컨테이너 유형을 제공합니다 : 힙, 목록 및 벡터. 독특한 장점을 제공합니다. 그러나 FIFO (First-inst-Out) 대기열을 구현하기 위해, 성능과 사용 편의성에 따라 특정 선택이 나타납니다.
대기열을위한 최적의 컨테이너
대중의 믿음과는 달리, 슬라이스는 기본 및 수행자 FIFO 대기열을 구현하기위한 이상적인 솔루션을 제공합니다. 다른 컨테이너 유형과 달리 슬라이스는 불필요한 크기 조정 및 재 할당을 피하는 효율적인 프레임 워크를 제공합니다.
슬라이스를 사용한 구현
queue := make([]int, 0) // Push to the queue queue = append(queue, 1) // Top (just get next element, don't remove it) x := queue[0] // Discard top element queue = queue[1:] // Is empty? if len(queue) == 0 { fmt.Println("Queue is empty !") }
다음 코드 스 니펫은 Queue의 단순화 된 구현을 보여줍니다. 슬라이스 사용 :
큐 : = make ([] int, 0) // 대기열로 밀어 넣습니다 대기열 = Append (Queue, 1) // 상단 (그냥 다음 요소를 얻으십시오. 제거하지 마십시오) x : = 대기열 [0] // 상단 요소를 버립니다 대기열 = 대기열 [1 :] // 비어 있습니까? LEN (대기열) == 0 {인 경우 fmt.println ( "대기열이 비어 있습니다!") }
슬라이싱의 신뢰성
이 접근법은 이동 중에 Append and Slicing의 효율적인 구현에 의존하여 작업이 상당한 오버 헤드없이 수행되도록합니다. 기본 대기열 작업의 경우이 구현은 적절하고 효율적인 솔루션을 제공합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3