原本寫敏感詞檢測的代碼,後面需求撤銷了,留下一點可複用的代碼懷念下app
package stack // 不肯定變量類型和結構,使用了interface type Stack struct { data []interface{} } func (s *Stack) Push (item interface{}) (string, bool) { s.data = append(s.data, item) return "ok", true } func (s *Stack) Pop () (interface{}, bool) { length := s.Length() var item interface{} if length == 0 { return item, false } else if length == 1{ item = s.data[0] s.data = []interface{} {} return item, true } else { item = s.data[0] s.data = s.data[1:] return item, true } } func (s *Stack) ElementAt (index int) (interface{}, bool) { length := len(s.data) if index >= length { return []interface{} {}, false } return s.data[index], true } // 原則上講,不該該存在的操做 func (s *Stack) UpdateElementAt (data interface{}, index int) (bool) { length := len(s.data) if index >= length { return false } s.data[index] = data return true } // 原則上講,不該該存在的操做 func (s *Stack) RemoveElementAt (index int) (interface{}, bool) { length := len(s.data) if index >= length { return []interface{} {}, false } s.data = append( s.data[:index], s.data[index + 1:], ) return s.data[index], true } func (s *Stack) Length () (int) { return len(s.data); }