使用Go语言 生成iOS SDK

Python010

使用Go语言 生成iOS SDK,第1张

brew install go

输入 brew info go 或者 go env 即可查看当前安装的golang版本信息

注意:千万不要把GOPATH设置成go的安装路径,可以自己在用户目录下创建一个目录,例如mygo

一般安装好go之后,使用go env查看一下当前环境。此时显示出来的GOROOT就是你使用brew安装go的安装目录,这个路径要记下来。接下来要在bash_profile文件中进行配置。

使用vim ~/.bash_profile

然后在这个文件中进行编辑,下面以我的电脑为例,路径这种要根据不同人的情况而定

GOROOT=/usr/local/Cellar/go/1.10.1/libexec (改成自己的go安装目录 go env命令可查看)

export GOROOT (不用动)

export GOPATH=/Users/jiangqiaowei/mygo (创建一个自己的文件夹 管理go相关内容)

export GOBIN=$GOPATH/bin (不用改)

export PATH=$PATH:$GOBIN:$GOROOT/bin (不用改)

$ go get golang.org/x/mobile/cmd/gomobile (需要墙)

gomobile init

$ go get -d golang.org/x/mobile/example/bind/...

$ cd $GOPATH/src/golang.org/x/mobile/example/bind

$ gomobile bind -target=ios golang.org/x/mobile/example/bind/hello

此命令在ios/路径下生成bind.xcodeprojxcode项目以及 在bind/目录下生成一个 hello.framework

拖入项目即可使用

那样看是那种的平板了!

一、ipad系列,使用的IOS系统,该系统只支持苹果的硬件。如果你要针对IOS系统编写应用程序的话,可以参考如下:

开发工具:

1.Omnigraffle + Ultimate iPhone Stencil

Omnigraffle是一个很强大的像Microsoft Viso的一个软件,其只能于运行在Mac OS X和iPad平台之上。

具体的你可以看这个,很全的开发工具和资源。

http://www.chinaz.com/free/2011/0803/203134.shtml

语言

object c 是ios的开发语言,如果你想开发ios上的应用程序,这是你的唯一选择。

二、android系列,说道这个,我就有点心得了。本人正在研究中。。。。

开发工具:eclipse(myeclipse)+adt+android sdk

开发语言:因为android要分多层,如果你要作的是应用的开发,你要学习的就是java语言。

如果你要学习的是类库的编写、驱动的编写,你要学习的就是c或c++。这就要看你自己的爱好了。

目前android还没有像样的想微软那样的强大的可视化开发工具(支持拖拽,因为android的adt你是可以时时的看到自己的界面效果)。不过已经有网友开发出了一个简易的可视化支持拖拽的小软件。叫:DroidDraw。用了用,还不错。可能也是因为本人是初来乍到者。

09年,google推出了自己的系统级别的编程语言google Go,不过一直处于内测阶段,近期很有可能这个语言要发布,如果google Go语言发布,我个人认为,android的底层由c或c++编写的代码部分很有可能会被google Go语言代替,所以如果想学习android的,可以学习一下google Go,不过由于没有发布,所以网上的资料少的可怜,趋于没有。期待吧。。

三、wp,微软的系统。

开发工具不用说了。那就是强大的Visual Studio ,开发语言就是C#语言即可。

PostgreSQL和MySQL比较,它更加庞大一点,因为它是用来替代Oracle而设计的。所以在企业应用中采用PostgreSQL是一个明智的选择。

现在MySQL被Oracle收购之后,有传闻Oracle正在逐步的封闭MySQL,,鉴于此,将来我们也许会选择PostgreSQL而不是MySQL作为项目的后端数据库。

1、驱动

Go实现的支持PostgreSQL的驱动也很多,因为国外很多人在开发中使用了这个数据库。

https://github.com/bmizerany/pq 支持database/sql驱动,纯Go写的

https://github.com/jbarham/gopgsqldriver 支持database/sql驱动,纯Go写的

https://github.com/lxn/go-pgsql 支持database/sql驱动,纯Go写的

在下面的示例中我采用了第一个驱动,因为它目前使用的人最多,在github上也比较活跃。

2、实例代码

数据库建表语句:

复制代码

CREATE TABLE userinfo

(

uid serial NOT NULL,

username character varying(100) NOT NULL,

departname character varying(500) NOT NULL,

Created date,

CONSTRAINT userinfo_pkey PRIMARY KEY (uid)

)

WITH (OIDS=FALSE)

CREATE TABLE userdeatail

(

uid integer,

intro character varying(100),

profile character varying(100)

)

WITH(OIDS=FALSE)

复制代码

看下面这个Go如何操作数据库表数据:增删改查

复制代码

package main

import (

"database/sql"

"fmt"

_ "github.com/bmizerany/pq"

)

func main() {

db, err := sql.Open("postgres", "user=astaxie password=astaxie dbname=test sslmode=disable")

checkErr(err)

//插入数据

stmt, err := db.Prepare("INSERT INTO userinfo(username,departname,created) VALUES($1,$2,$3) RETURNING uid")

checkErr(err)

res, err := stmt.Exec("astaxie", "研发部门", "2012-12-09")

checkErr(err)

//pg不支持这个函数,因为他没有类似MySQL的自增ID

id, err := res.LastInsertId()

checkErr(err)

fmt.Println(id)

//更新数据

stmt, err = db.Prepare("update userinfo set username=$1 where uid=$2")

checkErr(err)

res, err = stmt.Exec("astaxieupdate", 1)

checkErr(err)

affect, err := res.RowsAffected()

checkErr(err)

fmt.Println(affect)

//查询数据

rows, err := db.Query("SELECT * FROM userinfo")

checkErr(err)

for rows.Next() {

var uid int

var username string

var department string

var created string

err = rows.Scan(&uid, &username, &department, &created)

checkErr(err)

fmt.Println(uid)

fmt.Println(username)

fmt.Println(department)

fmt.Println(created)

}

//删除数据

stmt, err = db.Prepare("delete from userinfo where uid=$1")

checkErr(err)

res, err = stmt.Exec(1)

checkErr(err)

affect, err = res.RowsAffected()

checkErr(err)

fmt.Println(affect)

db.Close()

}

func checkErr(err error) {

if err != nil {

panic(err)

}

}

复制代码

从上面的代码我们可以看到,PostgreSQL是通过$1,$2这种方式来指定要传递的参数,而不是MySQL中的?,另外在sql.Open中的dsn信息的格式也与MySQL的驱动中的dsn格式不一样,所以在使用时请注意它们的差异。

还有pg不支持LastInsertId函数,因为PostgreSQL内部没有实现类似MySQL的自增ID返回,其他的代码几乎是一模一样