自定义堆栈Stack
发布时间:2020-12-16 18:50:39 所属栏目:大数据 来源:网络整理
导读:学习GO中自定义类型的定义,接口和方法的写法 测试用例: https://github.com/panyingyun/gostudy/blob/master/testStack.go package mainimport ("fmt""github.com/panyingyun/gostudy/stacker")func main() {a := stacker.NewStack(2)a.Push("Google")a.Pu
学习GO中自定义类型的定义,接口和方法的写法 测试用例: https://github.com/panyingyun/gostudy/blob/master/testStack.go package main import ( "fmt" "github.com/panyingyun/gostudy/stacker" ) func main() { a := stacker.NewStack(2) a.Push("Google") a.Push(100) a.Push([]int{1,2,3}) fmt.Println(a) fmt.Println(a.Len()) fmt.Println(a.Cap()) for { item,err := a.Pop() if err != nil { fmt.Println(err) break } fmt.Println(item) } } stack定义: https://github.com/panyingyun/gostudy/blob/master/stacker/stack.go package stacker import ( "errors" ) type Stack struct { st []interface{} len int cap int } func NewStack(cap int) *Stack { st := make([]interface{},cap) return &Stack{st,cap} } func (s *Stack) Len() int { return s.len } func (s *Stack) Cap() int { return s.cap } func (s *Stack) Push(p interface{}) { s.st = append(s.st,p) s.len = len(s.st) s.cap = cap(s.st) } func (s *Stack) Pop() (interface{},error) { if s.len == 0 { return nil,errors.New("Can't pop an empty stack") } s.len -= 1 out := s.st[s.len] s.st = s.st[:s.len] return out,nil } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |