go语言的好处不言而喻:
效率问题,无论是开发效率还是运行效率至少都兼顾了,比较适合中国国情。
运行可以以脚本运行,可以编译结果运行
跨平台没有大问题
例子,五分钟httpserve 和 MysqL 准备好show me the code先写一个数据库连接获取数据的 package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/MysqL" "github.com/jmoiron/sqlx") var DB *sqlx.DB func initDb() error { var err error dsn := "root:root@tcp(127.0.0.1:3306)/test" DB, err = sqlx.Open("MysqL", dsn) if err != nil { return err } DB.SetMaxOpenConns(100) DB.SetMaxIDleConns(16) return nil} type User struct { ID int64 `db:"ID"` name sql.NullString `db:"name"` Age int `db:"age"`} func testsqlxquery() { sqlstr := "select ID,name,age from user where ID = ?" var user User err := DB.Get(&user, sqlstr, 1) if err != nil { fmt.Printf("select Failed, err:%v\n", err) return } fmt.Printf("user:%#v\n", user)} func main() { err := initDb() if err != nil { fmt.Printf("init db Failed, err:%v\n", err) return } testsqlxquery()}
运行立刻得到结果,速度效率兼顾,当然自己需要
加上httpserver,然后从httpserver返回结果package mainimport ( "github.com/gin-gonic/gin" "fmt" //"database/sql" _ "github.com/go-sql-driver/MysqL" "github.com/jmoiron/sqlx" //"net/http")var ( username string = "root" password string = "root" ipAddrees string = "localhost" port int = 3306 dbname string = "test" charset string = "utf8") type User struct { ID int `db:"ID"` name string `db:"name"` Age int `db:"age"` Address string `db:"address"`} func getUser(Db *sqlx.DB) ([]User) { var users []User // 这里创建的是存放结构体的切片 if err := Db.Select(&users, "select * from user where ID > ?", 0); err != nil { fmt.Println("Select ERROR:", err) return nil } fmt.Println(users) return users}func getUserRecord(Db *sqlx.DB,ID int64){ result, err := Db.Exec("select * from user where ID = ?",ID) if err != nil { fmt.Printf("delete faIEd, error:[%v]", err.Error()) return } num, _ := result.RowsAffected() fmt.Printf("select success, affected rows:[%d]\n", num) //return result()}func connectMysqL() (*sqlx.DB) { dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s", username, password, ipAddrees, port, dbname, charset) Db, err := sqlx.Open("MysqL", dsn) if err != nil { fmt.Printf("MysqL connect Failed, detail is [%v]", err.Error()) return nil } Db.SetMaxOpenConns(20) Db.SetMaxIDleConns(15) return Db}func main() { var Db *sqlx.DB = connectMysqL() if Db == nil{ fmt.Println("db error") } defer Db.Close() x:=getUser(Db) r := gin.Default() r.GET("/Ping", func(c *gin.Context) { c.JsON(200, gin.H{ "message": "I am qianbo", }) }) r.GET("/get/user",func(c *gin.Context){ c.JsON(200,gin.H{ "data":x, }) }) r.Run() // Listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")}
浏览器里输入http://127.0.0.1:8080/get/user
可以看到返回的Json结果,我会继续写完整,go 语言和c,c++配合来写系统,事半功倍。
以上是内存溢出为你收集整理的使用go来做系统,如何比java node php 更 简单全部内容,希望文章能够帮你解决使用go来做系统,如何比java node php 更 简单所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)