четверг, 24 декабря 2020 г.

Go style guides: nil - это допустимый срез

nil - это допустимый срез длины 0. Это означает, что,

  • Вы не должны явно возвращать срез нулевой длины. Вместо этого верните nil.

    Менее удачный пример:

    if x == "" {
        return []int{}
    }
    

    Более удачный пример:

    if x == "" {
        return nil
    }
    

  • Чтобы проверить, пуст ли срез, всегда используйте len(s) == 0. Не проверяйте на nil.

    Менее удачный пример:

    func isEmpty(s []string) bool {
        return s == nil
    }
    

    Более удачный пример:

    func isEmpty(s []string) bool {
        return len(s) == 0
    }
    

  • Нулевое значение (срез, объявленный с помощью var) можно сразу использовать без make().

    Менее удачный пример:

    nums := []int{}
    // или, nums := make([]int)
    
    if add1 {
        nums = append(nums, 1)
    }
    
    if add2 {
        nums = append(nums, 2)
    }
    

    Более удачный пример:

    var nums []int
    
    if add1 {
        nums = append(nums, 1)
    }
    
    if add2 {
        nums = append(nums, 2)
    }
    

Помните, что, хотя это действительный срез, нулевой срез (nil slice) не эквивалентен выделенному срезу длины 0 - первый равен nil, а второй нет - и оба могут обрабатываться по-разному в разных ситуациях (например, при сериализации).


Читайте также:


Комментариев нет:

Отправить комментарий