【发布时间】:2018-05-11 09:47:45
【问题描述】:
我正在尝试将一些 C 代码转换为 Go,我想知道是否存在与以下链表类型等效的 Go:
typedef struct TOKENLIST {
token item;
struct TOKENLIST *next;
} token_list_elt, *token_list;
到目前为止,我似乎必须像这样分别创建这两种类型:
type token_list struct {
item token
next *token_list
}
type token_list_elt struct {
item token
next *token_list_elt
}
对于这个例子来说这没什么大不了的,但是我需要翻译很多像这样的链表类型,其中一些有很多别名和/或结构字段。
【问题讨论】:
-
Go 不太擅长实现通用数据结构。
-
token_list_elt是结构体,token_list是指向结构体的指针。是否有理由不能通过在 go 代码中将所有token_list类型显式实例化为&token_list_elt{ ... }来简单地翻译代码? -
这是一个糟糕的例子,其他结构定义不仅仅用于两种类型,其中一种类型是我在这里展示的指针。
标签: c go data-structures struct linked-list