go
-
Go语言热门应用
Docker Codis Glow(类似于Hadoop) Cockroach(数据库) InfluxDB(时序数据库)等。
-
Learning Go — from zero to hero
https://medium.freecodecamp.org/learning-go-from-zero-to-hero-d2a3223b3d86 https://www.osc…
-
Linux下使用go语言连接SAP RFC函数的方式
GO程序连接SAP RFC函数测试代码。 GO调用SAP RFC函数
-
Windows下使用go连接SAP RFC函数
使用SAP的nwrfcsdk和gorfc库。 基本步骤如下:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889Windows下使用go连接SAP RFC函数#安装nwrfcsdkC:\nwrfcsdk#配置path;C:\nwrfcsdk\lib#配置环境变量变量名:CGO_CFLAGS 变量值:C:\nwrfcsdk\include变量名:CGO_LDFLAGS 变量值:C:\nwrfcsdk\lib#安装gcchttps://sourceforge.net/projects/mingw/#安装go saprfc库go get github.com/stretchr/testifygo get github.com/sap/gorfccd $GOPATH/src/github.com/sap/gorfc/gorfcgo buildgo install#Hello Worldpackage mainimport ("fmt""github.com/sap/gorfc/gorfc""github.com/stretchr/testify/assert""reflect""testing""time")func abapSystem() gorfc.ConnectionParameter {return gorfc.ConnectionParameter{Dest: "I64",Client: "800",User: "demo",Passwd: "welcome",Lang: "EN",Ashost: "11.111.11.111",Sysnr: "00",Saprouter: "/H/222.22.222.22/S/2222/W/xxxxx/H/222.22.222.222/H/",}}func main() {c, _ := gorfc.Connection(abapSystem())var t *testing.Tparams := map[string]interface{}{"IMPORTSTRUCT": map[string]interface{}{"RFCFLOAT": 1.23456789,"RFCCHAR1": "A","RFCCHAR2": "BC","RFCCHAR4": "ÄBC","RFCINT1": 0xfe,"RFCINT2": 0x7ffe,"RFCINT4": 999999999,"RFCHEX3": []byte{255, 254, 253},"RFCTIME": time.Now(),"RFCDATE": time.Now(),"RFCDATA1": "HELLÖ SÄP","RFCDATA2": "DATA222",},}r, _ := c.Call("STFC_STRUCTURE", params)assert.NotNil(t, r["ECHOSTRUCT"])importStruct := params["IMPORTSTRUCT"].(map[string]interface{})echoStruct := r["ECHOSTRUCT"].(map[string]interface{})assert.Equal(t, importStruct["RFCFLOAT"], echoStruct["RFCFLOAT"])assert.Equal(t, importStruct["RFCCHAR1"], echoStruct["RFCCHAR1"])assert.Equal(t, importStruct["RFCCHAR2"], echoStruct["RFCCHAR2"])assert.Equal(t, importStruct["RFCCHAR4"], echoStruct["RFCCHAR4"])assert.Equal(t, importStruct["RFCINT1"], echoStruct["RFCINT1"])assert.Equal(t, importStruct["RFCINT2"], echoStruct["RFCINT2"])assert.Equal(t, importStruct["RFCINT4"], echoStruct["RFCINT4"])// assert.Equal(t, importStruct["RFCHEX3"], echoStruct["RFCHEX3"])assert.Equal(t, importStruct["RFCTIME"].(time.Time).Format("150405"), echoStruct["RFCTIME"].(time.Time).Format("15.assert.Equal(t, importStruct["RFCDATE"].(time.Time).Format("20060102"), e/Users/d037732/Downloads/gorfc/README.mdchoStruct["RFCDATE"].(time.Time).Format(".assert.Equal(t, importStruct["RFCDATA1"], echoStruct["RFCDATA1"])assert.Equal(t, importStruct["RFCDATA2"], echoStruct["RFCDATA2"])fmt.Println(reflect.TypeOf(importStruct["RFCDATE"]))fmt.Println(reflect.TypeOf(importStruct["RFCTIME"]))c.Close() -
go操作mysql
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687package mainimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql")func main() {/*db host: localhostdb port: 3306db version: 10.3.7-MariaDBdatabase: create database go;table: create table Person(`uid` int(10) not null auto_increment,`name` varchar(50),`age` int(1),`city` varchar(50),primary key(`uid`));*///connect to mysql/mariadb//username:password@protocol(address)/dbname?param=value//my database is:godb, err := sql.Open("mysql", "root:123456@tcp(localhost:3306)/go?charset=utf8")checkErr(err)//insert mysqlstmt, err := db.Prepare("INSERT Person SET name=?,age=?,city=?")checkErr(err)res, err := stmt.Exec("李玲", 35, "上海市")checkErr(err)id, _ := res.LastInsertId()fmt.Println("最后插入id", id)//updatestmt, err = db.Prepare("update Person set name=? where uid=?")checkErr(err)res, err = stmt.Exec("李璐", 1)checkErr(err)affect, err := res.RowsAffected()checkErr(err)fmt.Println("更新行数:", affect)//delete.stmt, err = db.Prepare("delete from Person where name=?")checkErr(err)res, err = stmt.Exec("李玲")checkErr(err)affect2, err2 := res.RowsAffected()checkErr(err2)fmt.Println("删除行数", affect2)//select mysql.rows, err := db.Query("SELECT * FROM Person")checkErr(err)for rows.Next() {var uid intvar name stringvar age intvar city stringerr = rows.Scan(&uid, &name, &age, &city)checkErr(err)fmt.Println(uid, name, age, city)}//关闭mysql数据库连接db.Close()}func checkErr(err error) {if err != nil { //err非空则表明遇到错误.panic(err)}}