// Copyright 2013 com authors // // Licensed under the Apache License, Version 2.0 (the "License"): you may // not use this file except in compliance with the License. You may obtain // a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations // under the License. package com import ( "strings" ) // AppendStr appends string to slice with no duplicates. func AppendStr(strs []string, str string) []string { for _, s := range strs { if s == str { return strs } } return append(strs, str) } // CompareSliceStr compares two 'string' type slices. // It returns true if elements and order are both the same. func CompareSliceStr(s1, s2 []string) bool { if len(s1) != len(s2) { return false } for i := range s1 { if s1[i] != s2[i] { return false } } return true } // CompareSliceStrU compares two 'string' type slices. // It returns true if elements are the same, and ignores the order. func CompareSliceStrU(s1, s2 []string) bool { if len(s1) != len(s2) { return false } for i := range s1 { for j := len(s2) - 1; j >= 0; j-- { if s1[i] == s2[j] { s2 = append(s2[:j], s2[j+1:]...) break } } } if len(s2) > 0 { return false } return true } // IsSliceContainsStr returns true if the string exists in given slice, ignore case. func IsSliceContainsStr(sl []string, str string) bool { str = strings.ToLower(str) for _, s := range sl { if strings.ToLower(s) == str { return true } } return false } // IsSliceContainsInt64 returns true if the int64 exists in given slice. func IsSliceContainsInt64(sl []int64, i int64) bool { for _, s := range sl { if s == i { return true } } return false }