英文:
how can i choose array size in stract type (golang)
问题
我需要做类似这样的事情:
在Go语言中,请帮忙,谢谢。
var size_IO = map[string]int{"AI": 32, "DI": 64, "AO": 32}
type IO_point struct {
Name string
}
type AI struct {
CART [64]IO_point
Type string
IO_points [size_IO[Type]]IO_point
}
请注意,这是一个Go语言的代码片段,其中定义了一个AI
结构体和相关的变量和类型。size_IO
是一个映射,它将字符串类型的输入/输出类型与其对应的大小关联起来。IO_point
是一个结构体,表示输入/输出点的名称。AI
结构体包含一个名为CART
的数组和一个名为Type
的字符串,以及一个根据Type
确定大小的IO_points
数组。
希望对你有帮助!如果你有任何其他问题,请随时提问。
英文:
i need do something like this :
in go language,please help ,thanks
var size_IO= map[string]int{"AI":32,"DI":64,"AO":32}
type IO_point struct{
Name string
}
type AI struct {
CART [64]IO_point
Type string
IO_points [size_IO[Type]]IO_point
}
答案1
得分: 3
**简短回答:**你不能这样做。
数组的长度是类型声明的一部分,其值必须在编译时解析。因此,它应该是常量。
const arr_size = 5
type IO_point struct {
Name string
}
type AI struct {
CART [64]IO_point
Type string
IO_points [arr_size]IO_point
}
在你的情况下,你需要使用切片(slice),它是一种动态数据结构,比数组更灵活。这里是一个示例:
var size_IO = map[string]int{"AI": 32, "DI": 64, "AO": 32}
type IO_point struct {
Name string
}
type AI struct {
CART [64]IO_point
Type string
IO_points []IO_point
}
func NewAi(cart [64]IO_point, t string) AI {
return AI{
CART: cart,
Type: t,
IO_points: make([]IO_point, 0, size_IO[t]),
}
}
英文:
Short answer: You cannot do this.
The length of the array is part of type declaration and its value must me resolved at compile time. So it should be constant.
const arr_size= 5
type IO_point struct {
Name string
}
type AI struct {
CART [64]IO_point
Type string
IO_points [arr_size]IO_point
}
In your situation you need a slice which is a dynamic data structure and more flexible than array. Here it is an example:
var size_IO = map[string]int{"AI": 32, "DI": 64, "AO": 32}
type IO_point struct {
Name string
}
type AI struct {
CART [64]IO_point
Type string
IO_points []IO_point
}
func NewAi(cart [64]IO_point, t string) AI {
return AI{
CART: cart,
Type: t,
IO_points: make([]IO_point, 0, size_IO[t]),
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论