diff --git a/packages/@jsii/go-runtime/jsii-runtime-go/helpers.go b/packages/@jsii/go-runtime/jsii-runtime-go/helpers.go index 54f7bc2fce..088e161460 100644 --- a/packages/@jsii/go-runtime/jsii-runtime-go/helpers.go +++ b/packages/@jsii/go-runtime/jsii-runtime-go/helpers.go @@ -1,6 +1,9 @@ package jsii -import "time" +import ( + "fmt" + "time" +) type basicType interface { bool | string | float64 | time.Time @@ -51,6 +54,12 @@ func Numbers[T numberType](v ...T) *[]*float64 { // String returns a pointer to the provided string. func String(v string) *string { return Ptr(v) } +// Sprintf returns a pointer to a fomratted string (semantics are the same as fmt.Sprintf). +func Sprintf(format string, a ...interface{}) *string { + res := fmt.Sprintf(format, a...) + return &res +} + // Strings returns a pointer to a slice of pointers to all of the provided strings. func Strings(v ...string) *[]*string { return PtrSlice(v...) diff --git a/packages/@jsii/go-runtime/jsii-runtime-go/helpers_test.go b/packages/@jsii/go-runtime/jsii-runtime-go/helpers_test.go index 4287dbeda9..edb6cbf0d3 100644 --- a/packages/@jsii/go-runtime/jsii-runtime-go/helpers_test.go +++ b/packages/@jsii/go-runtime/jsii-runtime-go/helpers_test.go @@ -64,6 +64,10 @@ func TestString(t *testing.T) { assert.Equal(t, "Hello", *String("Hello")) } +func TestSprintf(t *testing.T) { + assert.Equal(t, "formatted: 42", *Sprintf("formatted: %d", 42)) +} + func TestStrings(t *testing.T) { assert.Equal(t, []*string{String("Hello"), String("World")}, *Strings("Hello", "World")) }