gitech

Форк
0
/
option.go 
45 строк · 667.0 Байт
1
// Copyright 2024 The Gitea Authors. All rights reserved.
2
// SPDX-License-Identifier: MIT
3

4
package optional
5

6
type Option[T any] []T
7

8
func None[T any]() Option[T] {
9
	return nil
10
}
11

12
func Some[T any](v T) Option[T] {
13
	return Option[T]{v}
14
}
15

16
func FromPtr[T any](v *T) Option[T] {
17
	if v == nil {
18
		return None[T]()
19
	}
20
	return Some(*v)
21
}
22

23
func FromNonDefault[T comparable](v T) Option[T] {
24
	var zero T
25
	if v == zero {
26
		return None[T]()
27
	}
28
	return Some(v)
29
}
30

31
func (o Option[T]) Has() bool {
32
	return o != nil
33
}
34

35
func (o Option[T]) Value() T {
36
	var zero T
37
	return o.ValueOrDefault(zero)
38
}
39

40
func (o Option[T]) ValueOrDefault(v T) T {
41
	if o.Has() {
42
		return o[0]
43
	}
44
	return v
45
}
46

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.