随便写写,就当是打发时间

Golang数组与切片操作技巧

反转

func reverse(s []int) {
    for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
        s[i], s[j] = s[j], s[i]
    }
}
func main() {
    a := [...]int{0, 1, 2, 3, 4, 5}
    reverse(a[:])
    fmt.Println(a)
}

数组反转


func reverse(s *[7]int) {
    for i, j := 0, len(*s)-1; i < j; i, j = i+1, j-1 {
        (*s)[i], (*s)[j] = (*s)[j], (*s)[i]
    }
}
func main() {
    arr := [7]int{0, 1, 2, 3, 4, 5, 6}
    reverse(&arr)
    fmt.Println(arr)
}

编写一个函数,实现一次遍历就可以完成元素旋转

func rotate(s []int, position int) []int {
    r := s[position:]
    for i := position - 1; i >= 0; i-- {
        r = append(r, s[i])
    }
    return r
}
func main() {
    s := []int{0, 1, 2, 3, 4, 5}
    a := rotate(s, 4)
    fmt.Println(a)
}

编写一个函数,去除[]string 中相邻且重复的字符串元素

func removeDuplicateElement(s []string) []string {
    result := make([]string, 0, len(s))
    tmp := map[string]struct{}{}
    for _, i := range s {
        _, ok := tmp[i]
        if !ok {
            tmp[i] = struct{}{}
            result = append(result, i)
        }
    }
    return result
}
func main() {
    a := []string{"huo", "zhao", "zhang", "liang", "li", "zhao"}
    b := removeDuplicateElement(a)
    fmt.Println(b)
}

顺序打印散列值中的元素

func main() {
    ages := map[string]int{
        "alice": 31,
        "bob":   21,
        "nike":  27,
    }
    var names []string
    for name := range ages {
        names = append(names, name)
    }
    sort.Strings(names)
    for _, name := range names {
        fmt.Printf("%s\t%d\n", name, ages[name])
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值