현대 사회에서는 티켓 구매를 위한 줄, 진료를 위한 줄, 교통수단을 위한 줄 등 다양한 문제를 해결하기 위해 사람들은 점점 더 줄을 서야 합니다. 대기열을 달성하는 방법 중 하나는 컴퓨터 기술을 사용하는 것입니다.
컴퓨터 분야에는 Go, Golang이라고도 알려진 프로그래밍 언어가 있습니다. Google에서 개발한 최신 프로그래밍 언어로 고성능 분산 시스템을 개발하는 데 널리 사용됩니다. 이번 글에서는 Golang을 사용하여 큐잉을 구현하는 방법을 소개하겠습니다.
먼저 큐잉은 일반적인 데이터 구조 응용 시나리오이므로 Golang의 큐를 사용하여 큐잉을 구현할 수 있다는 점을 분명히 해야 합니다. 대기열은 대기열 모델과 매우 유사한 선입선출(FIFO) 데이터 구조입니다.
Golang에서는 내장 컨테이너 패키지의 목록을 사용하여 대기열을 구현할 수 있습니다. 구체적인 구현 방법은 다음과 같습니다.
type Queue struct { list *list.List }
func New() *Queue { return &Queue{ list: list.New(), } }
func (q *Queue) Push(v interface{}) { q.list.PushBack(v) }
func (q *Queue) Pop() interface{} { e := q.list.Front() if e != nil { q.list.Remove(e) return e.Value } return nil }
위는 Golang에서 목록을 사용하는 방법입니다. 대기열을 구현합니다.
다음으로 대기열을 사용하여 대기열 시스템을 구현하겠습니다. 대기열 시스템에서는 다음 사항을 구현해야 합니다.
위의 요구 사항을 기반으로 각 개인의 정보를 기록하는 Person 구조를 정의할 수 있습니다.
type Person struct { id int // 编号 waitTime int // 等待时间 serveTime int // 服务时间 }
다음으로 대기열 기능을 구현하기 위한 Queue 구조를 정의할 수 있습니다.
type Queue struct { list *list.List // 存储每个个体 } func NewQueue() *Queue { return &Queue{ list: list.New(), } } func (q *Queue) Push(p *Person) { q.list.PushBack(p) } func (q *Queue) Pop() *Person { e := q.list.Front() if e != nil { q.list.Remove(e) return e.Value.(*Person) } return nil } func (q *Queue) Len() int { return q.list.Len() }
위 코드 데모 방법 알아보기 대기열을 사용하여 대기열 기능을 구현합니다. 프로그램에서 이 대기열 구조를 사용하여 대기열 시스템의 대기열을 나타낼 수 있습니다.
이 대기열 구조를 사용하여 대기열 시스템을 구현하는 방법을 보여주는 간단한 예를 구현할 수 있습니다.
package main import ( "fmt" "time" ) type Person struct { id int // 编号 waitTime int // 等待时间 serveTime int // 服务时间 } func NewPerson(id int) *Person { return &Person{ id: id, } } func main() { q := NewQueue() // 模拟10个人排队 for i := 1; i <= 10; i++ { p := NewPerson(i) q.Push(p) } // 每秒钟服务一个人,直到队列为空 for q.Len() > 0 { time.Sleep(time.Second) p := q.Pop() if p != nil { p.waitTime += 1 p.serveTime += 1 fmt.Printf("编号%d的人被服务,等待%d秒,已服务%d秒 ", p.id, p.waitTime, p.serveTime) } } }
위 코드는 간단한 대기열 시스템을 보여줍니다. 대기열이 비어 있습니다.
이 글에서는 Golang을 이용하여 큐잉을 구현하는 방법을 소개합니다. 대기열 시스템을 구현할 때 대기열을 사용하여 개인을 저장하고, 특정 규칙에 따라 대기열에 개인을 추가하고, 대기열에서 개인을 제거하고, 개인 정보를 기록할 수 있습니다. Golang의 목록 패키지를 사용하면 대기열 기능을 쉽게 구현할 수 있습니다.
위 내용은 Golang은 큐잉을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!