From c25a68894f3bce8a8e63289b46ecd6e29f5cc227 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Thu, 22 Aug 2024 21:26:41 -0400 Subject: val: add TryGet() method --- val.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'val.go') diff --git a/val.go b/val.go index 4d35fb9..2b762cb 100644 --- a/val.go +++ b/val.go @@ -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) -- cgit v1.2.3