В этом определении:
type MyprojectV1alpha1Interface interface {
RESTClient() rest.Interface
SamplesGetter
}
Ваш MyprojectV1alpha1Interface
встраивает интерфейс SamplesGetter
.
Встраивание интерфейса в другой интерфейс означает, что все методы встроенного интерфейса (SamplesGetter
) могут вызываться через интерфейс встраивания (MyprojectV1alpha1Interface
).
Это означает, что вы можете вызывать любой из методов SamplesGetter
для любого объекта, который реализует MyprojectV1alpha1Interface
.
Таким образом, как только вы получите объект MyprojectV1alpha1Interface
в вашей переменной temp
, вы можете вызвать метод Samples
(с подходящим namespace
, который я не могу угадать из кода, который вы разместили):
sampleInt := temp.Samples("namespace here")
sampleInt
будет иметь объект SampleInterface
, так что вы можете затем вызывать функцию Create
, используя переменную sampleInt
:
sample, err := sampleInt.Create(<you should use a *v1alpha1.Sample here>)
Для получения более подробной информации о том, как работают интерфейсы, я предлагаю вам перейти к официальным спецификациям и примерам:
https://golang.org/ref/spec#Interface_types
https://gobyexample.com/interfaces