diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2024-08-22 21:26:41 -0400 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2024-08-22 21:26:41 -0400 |
| commit | c25a68894f3bce8a8e63289b46ecd6e29f5cc227 (patch) | |
| tree | 321a856b960ba6ccc11113c8d1e93a390b9e9d90 /val.go | |
| parent | 67e43f976e2e07252b786e584e0290a516630df6 (diff) | |
| download | share-c25a68894f3bce8a8e63289b46ecd6e29f5cc227.zip | |
val: add TryGet() methodv0.1.0
Diffstat (limited to 'val.go')
| -rw-r--r-- | val.go | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -47,6 +47,19 @@ func (v Val[T]) Get() T { return <-c } +// TryGet returns the stored value if it has already been set, or false if it hasn't. +func (v Val[T]) TryGet() (*T, bool) { + c := make(chan T) + defer close(c) + select { + case v.Request <- c: + val := <-c + return &val, true + default: + return nil, false + } +} + func (v Val[T]) Close() { close(v.Request) close(v.Set) |