Как вернуть пустое значение в golang? - PullRequest
0 голосов
/ 20 января 2020

Мне нужно вернуть пустое значение для функции в golang, мой код выглядит примерно так:

package main

import (
    "fmt"
)

func main(){
    for i:=0;i<6;i++{
        x,e := test(i)
        fmt.Println(i,x,e)
    }


}

func test(i int)(r int,err error){
    if i%2==0{
        return i,nil
    }else{
        return 
    }
}

и его вывод

0 0 <nil>
1 0 <nil>
2 2 <nil>
3 0 <nil>
4 4 <nil>
5 0 <nil>

тогда как я хочу этот тип вывода

0 0 <nil>
1 <nil> <nil>
2 2 <nil>
3 <nil> <nil>
4 4 <nil>
5 <nil> <nil>

Как вернуть пустое значение в golang?

1 Ответ

5 голосов
/ 20 января 2020

«Пустое значение» является условностью. Вы должны определить, что означает пустое значение.

  • Многие из стандартных библиотечных функций возвращают недопустимое значение для обозначения пустого. Например, strings.Index возвращает -1, поскольку все допустимые значения>> 0
  • Функции, возвращающие указатель, обычно возвращают nil
  • Существуют функции, которые возвращают пары значений, одно значение и один обозначает действительность. Карты и каналы также используют это соглашение:
value, exists:=someMap[key]

Выше, если exists истинно, тогда value имеет допустимое значение. Если exists равно false, value недопустимо (пусто).

  • Многие функции возвращают значение и ошибку. Если ошибка не равна нулю, значение не имеет смысла.

Итак, в вашем коде вы можете сделать:

func test(i int)(r int,valid bool){
    if i%2==0{
        return i,true
    }else{
        return 0,false
    }
}

Или, если у вас есть условие ошибки, вернуть ненулевая ошибка в вашей функции и проверьте, есть ли ошибка, где вы ее вызвали. В случае ошибки любое возвращаемое значение будет «пустым».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...