封装一个像java中的ArrayList类:(切记: 此类在多协程下使用不安全 )
package code import "sync" type Array interface { Ini(); Add(interface{}) bool; Contains(interface{}) int; Size() int; Get(int) interface{}; Remove(int) interface{}; RemoveO(interface{}) bool; } type ArrayList struct { Data []interface{}; } func (this *ArrayList)Ini() { this.Data=make([]interface{},0); } func (this *ArrayList) Add (i interface{}) bool { this.Data= append (this.Data, i); return true; } //判断是否保存对象 -1 表示没有对象 func (this *ArrayList) Contains(i interface{}) int { var r int =-1; out:for k,v:=range this.Data { if(v==i){ r=k; break out; } } return r; } func (this *ArrayList) Size() int { return len(this.Data); } func (this *ArrayList) Get(index int) interface{} { var r interface{}= nil ; if(index>=0 && index<len(this.Data)){ r=this.Data[index]; } return r; } // 索引 删除 func (this *ArrayList) Remove(index int) interface{} { var r interface{}=nil; if(index>=0 && index<len(this.Data)){ if(index==0) { r=this.Data[index]; this.Data = this.Data[1:len(this.Data)] }else if(index==(len(this.Data)-1)){ r=this.Data[index]; this.Data = this.Data[0:len(this.Data)-1] }else { r=this.Data[index]; this.Data=append(this.Data[0:index],this.Data[index+1:len(this.Data)]...); } } return r; } //对象删除 func (this *ArrayList) RemoveO(i interface{}) bool { var r int=-1; out:for k,v:=range this.Data { if(v==i){ r=k; break out; } } if(r>=0) { this.Remove(r); return true; }else { return false; } }
注意:此类在多协程下不安全。(多协程安全Arraylist会在后面文章中分享)