通过 import go.hello.Hello 来 import 对应的 go 文件,文件里的 Greetings 函数在 Java 代码里可以通过 Hello.Greetings 来调用。并不需要太复杂的步骤,在go 函数和 native 的 UI 元素之间就可以建立上绑定关系。
iOS把一个 iOS 应用和 Go 程序直接进行绑定需要不同的步骤。首先需要运行下面的命令:
cd GoLang_Install_dir/src/golang.org/x/mobile/example/bind
gomobile bind -target=ios golang.org/x/mobile/example/bind/hello
这样会在当前目录下创建一个叫 Hello.framework 的 bundle,在项目里可以使用它。
在 Xcode 打开例子中的 iOS 项目,位于 GoLangInstalldir/src/golang.org/x/mobile/example/bind/ios/bind.xcodeproj ,把 Hello.framework 拖到项目里,如果需要,选择"Copy items"。目录结构现在看上去是下面这样:
构建和运行这个应用(更像 Android 应用),我们可以看到在 Objective-C 代码里进行 Go 函数的调用。
看一下现在的代码:
#import "ViewController.h"
#import "hello/Hello.h" // Gomobile bind generated header file in hello.framework
@interface ViewController ()
@end
@implementation ViewController
@synthesize textLabel;
- (void)loadView {
[super loadView];
textLabel.text = GoHelloGreetings(@"iOS and Gopher");
}
@end
#import "hello/Hello.h"导入了之前生成的 framework,textLabel.text = GoHelloGreetings(@"iOS and Gopher");调用了它暴露出的一个函数来设置一个 label 的值。
也可以使用同样是自动生成的基于 Swift 的项目里的 Objective-C 的 framework,像下面这样:
let msg = Hello.GoHelloGreetings("gopher")
是否值得?
嗯,简单的说可能是不值得。如果你已经在使用 Go 来写应用了,并且不在乎应用是否 native 的,那么你可以放开手继续做,因为你已经知道了构建和部署用 Go 写的 native 应用是很简单的。如果你打算花更多的精力尝试一下绑定,你可以走的更远一些,不过还是需要稍微控制一下。
如果你没在用 Go,那么就不太值的现在就在开发 native 的移动应用时考虑 Go。不过我有很强烈的预感,在不久的将来,Go 会成为这方面很有潜力的选择的。最后欢迎你的建议和意见。
如何为Linux安装Go语言
Linux系统入门学习-在Linux中安装Go语言
Ubuntu 安装Go语言包