Interfaces
The information on this page is only applicable to the Go SDK. Interfaces are not currently supported in the Python and TypeScript SDKs.
The Go SDK supports interfaces, which allow you to define Go-style interface definitions so that your module can accept arbitrary values from other modules without being tightly coupled to the concrete type underneath.
To use an interface, define a Go interface that embeds DaggerObject
and use
it in a function argument:
package main
import (
"context"
)
type MyModule struct{}
type Fooer interface {
DaggerObject
Foo(ctx context.Context, bar int) (string, error)
}
func (m *MyModule) Foo(ctx context.Context, fooer Fooer) (string, error) {
return fooer.Foo(ctx, 42)
}
Functions defined in interface definitions must match the client-side API
signature style. If they return a scalar value or an array, they must accept a
context.Context
argument and return an error
return value. If they return a
chainable object value, they must not return an error
value, and they do not need
to include a context.Context
argument.
Note that you must also provide argument names, since they directly translate to the GraphQL field argument names.