この関数の機能は、入力文字列スライスから重複要素を削除し、重複を排除した結果を返すことです。具体的な実装ロジックは次のとおりです。
- 重複排除された文字列を保存するための空の結果スライスを作成します
result
。 - 一意の文字列を保存するための一時マップを作成します
tempMap
。マップのキーは文字列で、値はバイトです。 - 入力文字列スライス
slc
の各要素を反復処理しますe
。- まず、
tempMap
長さを取得して変数に代入しますl
。 - 次に、文字列を
e
キーとして使用し、値を 0 に設定して、 に保存しますtempMap
。 tempMap
追加後に のtempMap
長さが変更された 場合(つまり、存在しない要素が正常に追加された場合)、その要素は初めて出現し、繰り返されないことを意味します。- この要素を
e
結果のスライスに追加しますresult
。
- この要素を
- まず、
- すべての要素を走査した後、結果スライス
result
(重複排除後の結果) を返します。
// 通过map主键唯一的特性过滤重复元素
func RemoveDuplicateStrings(strs []string) []string {
result := []string{}
tempMap := map[string]byte{} // 存放不重复字符串
for _, e := range strs {
l := len(tempMap)
tempMap[e] = 0
if len(tempMap) != l { // 加入map后,map长度变化,则元素不重复
result = append(result, e)
}
}
return result
}