golang slice 遍历取值问题

func MaxMin(position [][]float64) (max, min []float64) {

    for k, v := range position {
        if k == 0 {
            max = position[k]
            min = position[k]
            continue
        }
        if v[0] > max[0] {
            max[0] = v[0]
        }
        if v[1] > max[1] {
            max[1] = v[1]
        }
        if v[0] < min[0] {
            min[0] = v[0]
        }
        if v[1] < min[1] {
            min[1] = v[1]
        }
        fmt.Println(v)
    }
    return
}

最后return出来的值永远是遍历的最后一位,这应该是受slice的特性所影响
求优化

阅读 5.6k
2 个回答
func MaxMin(position [][]float64) (max, min [2]float64) { // 改为数组解决

    for k, v := range position {
        if k == 0 {
            max = [2]float64{
                position[k][0],
                position[k][1],
            }
            min = [2]float64{
                position[k][0],
                position[k][1],
            }
            continue
        }
        if v[0] > max[0] {
            max[0] = v[0]
        }
        if v[1] > max[1] {
            max[1] = v[1]
        }
        if v[0] < min[0] {
            min[0] = v[0]
        }
        if v[1] < min[1] {
            min[1] = v[1]
        }
        fmt.Println(v)
    }
    return
}
func MaxMin(position [][]float64) (max, min []float64) {

    for k, v := range position {
        if k == 0 {
            max = position[k]
            min = position[k]
            continue
        }
        v: = v // 加上
        if v[0] > max[0] {
            max[0] = v[0]
        }
        if v[1] > max[1] {
            max[1] = v[1]
        }
        if v[0] < min[0] {
            min[0] = v[0]
        }
        if v[1] < min[1] {
            min[1] = v[1]
        }
        fmt.Println(v)
    }
    return
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题