练习1
给定一个字符串列表,在原有slice基础上,返回不包含空字符串的slice。
如:{“aaa”, “bbb”, “ccc”, “”, “aa”, “”, “bb”, “”, “cc”}
返回:{“aaa”, “bbb”, “ccc”, “aa”, “bb”, “cc”}
参考答案
package main
import "fmt"
// 去除字符串切片中的空字符串
func strRemoveBlank(data []string) []string {
var result []string
for _, v := range data {
if v != "" {
result = append(result, v)
}
}
return result
}
func main() {
data := []string{"aaa", "bbb", "ccc", "", "aa", "", "bb", "", "cc"}
fmt.Println(data)
result := strRemoveBlank(data)
fmt.Println(result)
fmt.Println("==================")
for k, v := range result {
fmt.Println(k, v)
}
}
输出结果
练习2
写一个函数,清除[]string中的重复字符串。
如:[“aa”,“bb”,“cc”,“aa”,“bb”,“cc”,“aa”,“bb”,“cc”]
结果:[“aa”,“bb”,“cc”]
参考答案
package main
import "fmt"
// 去除字符串切片中的重复字符串
func strRemoveRepeated(data []string) []string {
var result []string
for _, v := range data {
if !strIsInSlice(v, result) {
result = append(result, v)
}
}
return result
}
// 判断字符串是否在字符串切片中
func strIsInSlice(str string, slice []string) bool {
for _, v := range slice {
if str == v {
return true
}
}
return false
}
func main() {
data := []string{"aa", "bb", "cc", "aa", "bb", "cc", "aa", "bb", "cc"}
fmt.Println(data)
result := strRemoveRepeated(data)
fmt.Println(result)
fmt.Println("===============================")
for k, v := range result {
fmt.Println(k, v)
}
}