Golang Api Kind结构创建中的类型冲突



在客户端go中创建types.go时遇到问题。

kind: Kafka
metadata:
name: my-cluster
namespace: sample-system
spec:
kafka:
version: 2.5.0
replicas: 3
listeners:
plain:
authentiation:
type: scram-sha-512
tls:
authentiation:
type: tls

根据下面的Kind";卡夫卡">。。。

我有Kafka Kind的模式如下


// Kafka is the Schema for the kafkas API
type Kafka struct {
metav1.TypeMeta   `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec   KafkaSpec   `json:"spec,omitempty"`
Status KafkaStatus `json:"status,omitempty"`
}

而当我需要定义Spec.kafka类型时

// KafkaSpec defines the desired state of KafkaBundle
type KafkaSpec struct {
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file
Kafka          *Kafka      `json:"kafka"`

// Foo is an example field of Kafka. Edit Kafka_types.go to remove/update
Foo string `json:"foo,omitempty"`
}

我面临两个kafka结构类型的问题。这是错误的。

您的结构Kafka有一个依赖结构KafkaSpec,而结构KafkaSpec依赖于结构Kafka。如果你研究结构,你会创建一个循环依赖,这可能是一个问题。我建议遵循以下结构,

主结构Kafka

// Kafka is the Schema for the kafkas API
type Kafka struct {
metav1.TypeMeta   `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec   KafkaSpec   `json:"spec,omitempty"`
Status KafkaStatus `json:"status,omitempty"`
}

构造Spec,它是Kafka的子级。

// Spec defines the desired state of KafkaBundle
type Spec struct {
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file
Kafka          *KafkaSpec      `json:"kafka"`

// Foo is an example field of Kafka. Edit Kafka_types.go to remove/update
Foo string `json:"foo,omitempty"`
}

结构KafkaSpec是结构Spec的子级

type KafkaSpec struct {
Replicas int `json:"replicas"`
Listeners *Listners
}

类似地,为PlainAuthentication创建一个结构。

我希望这能解决你的问题。

最新更新