在跨平台移动应用程序开发过程中,我遇到了 Golang,它有一个 GoMobile 命令行工具,可以生成语言绑定(bind),从而可以从 Java 和 Objective-C 调用 Go 函数。但是,导出的函数/方法中使用的类型有一些限制,如下所述:https://godoc.org/golang.org/x/mobile/cmd/gobind#hdr-Type_restrictions
关于支持导出函数中使用的数据类型中的结构 slice (结构数组)的工作有什么想法
最佳答案
使用 String
的解决方法举个例子:
type StringCollection interface {
Add(s string) StringCollection
Get(i int) string
Size() int
}
// TODO solve this with generics
type StringArray struct {
items []string
}
func (array StringArray) Add(s string) StringArray {
array.items = append(array.items, s)
return array
}
func (array StringArray) Get(i int) string {
return array.items[i]
}
func (array StringArray) Size() int {
return len(array.items)
}
Go 中的用法:
func GetExampleStringArray() *StringArray {
strings := []string{"example1", "example2"}
return &StringArray{items: strings}
}
在 Android 上,您可以使用此扩展将其转换为 List<String>
:
fun StringArray.toStringList(): List<String> {
val list = mutableListOf<String>()
for (i in 0 until size()) {
list.add(get(i))
}
return list
}
fun main() {
GoPackage.getExampleStringArray().toStringList()
}
关于Golang - 用于结构返回类型跨平台 slice 的 GoMobile 工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44382115/