• go常用操作


    倒序遍历切片中的元素

    package t9
    
    import (
        "fmt"
        "testing"
    )
    
    func TestRange(t *testing.T) {
    
        lst1 := []int{1, 2, 3, 4, 5}
    
        // 方法1
        for index := range lst1{
            curr := lst1[len(lst1) - (index+1)]
            fmt.Println(curr)
        }
        /*
            5
            4
            3
            2
            1
        */
    
        fmt.Println("==================================")
    
        // 方法2
        for i := len(lst1)-1; i >=0; i--{
            curr := lst1[i]
            fmt.Println(curr)
        }
        /*
            5
            4
            3
            2
            1
        */
    }

    判断字符串是否在切片中

    package main
    
    import "fmt"
    
    func main() {
        var accountArr2 = []string{"id", "name", "status", "timezone", "created_at", "updated_at", "organization_id"}
        flag := IsContain2(accountArr2, "whw")
        fmt.Println(flag)
    }
    
    // 判断字符串是否在切片中~~
    func IsContain2(strList []string, item string) bool {
        for _, str := range strList {
            if str == item {
                return true
            }
        }
        return false
    }
    判断字符串是否在切片中

    给字典排序

    package main
    
    import (
        "fmt"
        "sort"
    )
    
    func main() {
        // map排序
        map1 := map[string]int{
            "awhw":1,
            "naruto":22,
            "sasuke":33,
        }
        fmt.Println(map1) // map[awhw:1 naruto:22 sasuke:33]
    
        var keys []string
        for key, _ := range map1{
            keys = append(keys,key)
        }
        // 给key排序
        sort.Strings(keys)
        // 放入另外一个空间
        map2 := make(map[string]int)
        for _, val := range keys{
            map2[val] = map1[val]
        }
        fmt.Println(map2) //map[awhw:1 naruto:22 sasuke:33]
    }
    给字典排序

    整理切片格式(实践经验)

    给定一个存放时间字符串的切片:

    [2020-01-01 2020-01-02 2020-01-03 2020-01-04 2020-01-05 2020-01-06 2020-01-07 2020-01-08 2020-01-09 2020-01-10 2020-01-11 2020-01-12 2020-01-13 2020-01-14 2020-01-15 2020-01-16 2020-01-17 2020-01-18 2020-01-19 2020-01-20 2020-01-21 2020-01-22 2020-01-23 2020-01-24 2020-01-25 2020-01-26 2020-01-27 2020-01-28 2020-01-29 2020-01-30 2020-01-31 2020-02-01 2020-02-02 2020-02-03 2020-02-04 2020-02-05 2020-02-06 2020-02-07 2020-02-08 2020-02-09 2020-02-10 2020-02-11 2020-02-12 2020-02-13 2020-02-14 2020-02-15 2020-02-16 2020-02-17 2020-02-18 2020-02-19 2020-02-20 2020-02-21 2020-02-22 2020-02-23 2020-02-24 2020-02-25 2020-02-26 2020-02-27 2020-02-28 2020-02-29 2020-03-01 2020-03-02 2020-03-03 2020-03-04 2020-03-05 2020-03-06 2020-03-07 2020-03-08 2020-03-09 2020-03-10 2020-03-11 2020-03-12 2020-03-13 2020-03-14 2020-03-15 2020-03-16 2020-03-17 2020-03-18 2020-03-19 2020-03-20 2020-03-21 2020-03-22 2020-03-23 2020-03-24 2020-03-25 2020-03-26 2020-03-27 2020-03-28 2020-03-29 2020-03-30 2020-03-31 2020-04-01 2020-04-02 2020-04-03 2020-04-04 2020-04-05 2020-04-06 2020-04-07 2020-04-08 2020-04-09 2020-04-10 2020-04-11 2020-04-12 2020-04-13 2020-04-14 2020-04-15 2020-04-16 2020-04-17 2020-04-18 2020-04-19 2020-04-20 2020-04-21 2020-04-22 2020-04-23 2020-04-24 2020-04-25 2020-04-26 2020-04-27 2020-04-28 2020-04-29 2020-04-30 2020-05-01 2020-05-02 2020-05-03 2020-05-04 2020-05-05 2020-05-06 2020-05-07 2020-05-08 2020-05-09 2020-05-10 2020-05-11 2020-05-12 2020-05-13 2020-05-14 2020-05-15 2020-05-16 2020-05-17 2020-05-18 2020-05-19 2020-05-20 2020-05-21 2020-05-22 2020-05-23 2020-05-24 2020-05-25 2020-05-26 2020-05-27 2020-05-28 2020-05-29 2020-05-30 2020-05-31 2020-06-01 2020-06-02 2020-06-03 2020-06-04 2020-06-05 2020-06-06 2020-06-07 2020-06-08 2020-06-09 2020-06-10 2020-06-11 2020-06-12 2020-06-13 2020-06-14 2020-06-15 2020-06-16 2020-06-17 2020-06-18 2020-06-19 2020-06-20 2020-06-21 2020-06-22 2020-06-23 2020-06-24 2020-06-25 2020-06-26 2020-06-27 2020-06-28 2020-06-29 2020-06-30 2020-07-01 2020-07-02 2020-07-03 2020-07-04 2020-07-05 2020-07-06 2020-07-07 2020-07-08 2020-07-09 2020-07-10 2020-07-11 2020-07-12 2020-07-13 2020-07-14 2020-07-15 2020-07-16 2020-07-17 2020-07-18 2020-07-19 2020-07-20 2020-07-21 2020-07-22 2020-07-23 2020-07-24 2020-07-25 2020-07-26 2020-07-27 2020-07-28 2020-07-29 2020-07-30 2020-07-31 2020-08-01 2020-08-02 2020-08-03 2020-08-04 2020-08-05 2020-08-06 2020-08-07 2020-08-08 2020-08-09 2020-08-10 2020-08-11 2020-08-12 2020-08-13 2020-08-14 2020-08-15 2020-08-16 2020-08-17 2020-08-18 2020-08-19 2020-08-20 2020-08-21 2020-08-22 2020-08-23 2020-08-24 2020-08-25 2020-08-26 2020-08-27 2020-08-28 2020-08-29 2020-08-30 2020-08-31 2020-09-01 2020-09-02 2020-09-03 2020-09-04 2020-09-05 2020-09-06 2020-09-07 2020-09-08 2020-09-09 2020-09-10 2020-09-11 2020-09-12 2020-09-13 2020-09-14 2020-09-15 2020-09-16 2020-09-17 2020-09-18 2020-09-19]

    把它里面的字符串按照每4个一组整理成切片套切片的格式!

    有问题的方法(有问题)

    // 根据存时间字符串的切片获取一个按照每4天分组的新切片
    func getNewDateSlice(dateSlice []string) [][]string{
        var retSlice [][]string
        length := len(dateSlice)
        //fmt.Println("length>>> ", length) // 263
        //// 可以分多少份
        //allParts := length / 4
        //fmt.Println("allParts>>> ", allParts) // 65
        //// 剩下多少个
        //remainder := length % 4
        //fmt.Println("remainder>>> ", remainder) // 3
        // 分组
        for i := 0; i < length; i+=4 {
            currSLice := dateSlice[i:i+4]
            retSlice = append(retSlice, currSLice)
        }
        return retSlice
    }

    注意结果会报错!如果 i+4 超过了length的话会上报越界错误!

    正确的方法(正确)

    出现问题的原因是如果i+4超出了length的话,再使用切片就会使得最后这些值默认转成空字符串。正确的方法需要处理一下边界值,如果i+4大于了length就用边界的length即可:

    // 根据存时间字符串的切片获取一个按照每4天分组的新切片
    func getNewDateSlice(dateSlice []string) [][]string {
        var retSlice [][]string
        length := len(dateSlice)
        // 分组
        for i := 0; i < length; i += 4 {
            var currSlice []string
            if i+4 > length{
                currSlice = dateSlice[i : length]
            }else{
                currSlice = dateSlice[i : i+4]
            }
            retSlice = append(retSlice, currSlice)
        }
        return retSlice
    }

    整理切片数据--下一个列表的开头是上一个列表的结尾

    输入:

    lst1 := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}

    输出:

    [[1 2 3 4 5 6] [6 7 8 9 10 11] [11 12 13]]

    代码:

    package t9
    
    import (
        "fmt"
        "testing"
    )
    
    // 返回两个int最小的那个
    func minInt(a, b int) int {
        if a < b {
            return a
        }
        return b
    }
    
    func TestOutRange(t *testing.T) {
    
        lst1 := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}
    
        var ret [][]int
    
        for i := 1; i < len(lst1); i += 5{
            currLst := lst1[i-1 : minInt(i+5, len(lst1))]
            ret = append(ret, currLst)
        }
    
        fmt.Println("ret>>> ", ret)
    
    }

    ~~~

  • 相关阅读:
    [MySQL] 日志文件概述
    ASP.NET session expired simple solution
    Sailfish应用开发入门(一)ApplicationWindow与Cover
    linux下QT4的使用
    js控制图片定时切换不限制数量
    C++ 从零单排(3)
    wordcraft(陈高远)
    苦逼翻滚之实习找工记事产品岗(3.184.23长文慎入)
    【Oracle导入导出】expdp
    【leetcode】Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/paulwhw/p/13890088.html
Copyright © 2020-2023  润新知