Golang中gomobile bind命令绑定的方法、函数和结构体有哪些

Golang中gomobile bind命令绑定的方法、函数和结构体有哪些 我正在使用 gomobile bind --target=ios /xx/xxproject/ 为 iOS 绑定 SDK。

我想知道,哪些 Go 函数、方法和结构体会通过 gomobile bind 命令绑定到 Objective-C?是否有标志可以告诉 gomobile bind 命令需要绑定哪些方法和函数?

func main() {
    fmt.Println("hello world")
}
1 回复

更多关于Golang中gomobile bind命令绑定的方法、函数和结构体有哪些的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在 Go 语言中,gomobile bind 命令会基于特定的规则自动选择要绑定的函数、方法和结构体。以下是详细的绑定规则和示例:

可绑定的元素

1. 导出函数

只有首字母大写的函数会被绑定:

// 会被绑定 - 首字母大写
func CalculateSum(a, b int) int {
    return a + b
}

// 不会被绑定 - 首字母小写
func internalCalc() int {
    return 42
}

2. 结构体和方法

导出结构体及其导出方法会被绑定:

// 会被绑定
type Calculator struct {
    Version string
}

// 会被绑定 - 接收器类型为导出结构体,方法名首字母大写
func (c *Calculator) Add(x, y int) int {
    return x + y
}

// 不会被绑定 - 方法名首字母小写
func (c *Calculator) internalMethod() int {
    return 0
}

// 不会被绑定 - 接收器类型未导出
type internalStruct struct{}
func (i *internalStruct) SomeMethod() {}

3. 接口

导出接口会被绑定:

// 会被绑定
type Processor interface {
    Process(data string) string
}

绑定控制

使用构建标签

可以通过 //go:build 标签控制绑定:

//go:build ios || android

package mobile

// MobileOnly 只在移动平台绑定
func MobileOnly() string {
    return "mobile function"
}

使用 -tags 标志

gomobile bind -target=ios -tags=mobile ./pkg

完整示例

package mylib

import "fmt"

// 导出结构体
type MathUtil struct {
    Name string
}

// 导出方法 - 会被绑定
func (m *MathUtil) Multiply(a, b int) int {
    return a * b
}

// 导出函数 - 会被绑定
func Greet(name string) string {
    return "Hello, " + name
}

// 导出接口 - 会被绑定
type StringTransformer interface {
    Transform(input string) string
}

// 内部函数 - 不会被绑定
func helperFunction() {
    fmt.Println("This won't be bound")
}

// 未导出结构体 - 不会被绑定
type config struct {
    setting string
}

注意事项

  1. main 函数和 main 包main 包中的函数不会被绑定,需要将代码组织在单独的包中
  2. 支持的数据类型:基本类型、切片、映射和符合绑定规则的结构体
  3. 错误处理:返回 error 类型的方法会在 Objective-C 中转换为异常

在您的示例中,main 函数和 fmt.Println 调用不会被绑定到 Objective-C,因为 main 包不是为绑定设计的。需要将功能代码放在单独的包中并确保使用导出的标识符。

回到顶部