gpt4 book ai didi

Golang - 用于结构返回类型跨平台 slice 的 GoMobile 工具

转载 作者:行者123 更新时间:2023-12-02 07:33:20 26 4
gpt4 key购买 nike

在跨平台移动应用程序开发过程中,我遇到了 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com