如何解决类型在Golang Api同类结构创建上发生冲突
在client-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
按照以下种类“卡夫卡” ...
我对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
}
类似地为Plain
和Authentication
创建一个结构。
我希望这可以解决您的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。