package main import ( "fmt" "net/http" //"net/url" "github.com/drone/routes" "database/sql" _ "github.com/go-sql-driver/mysql" "encoding/json" ) var db = &sql.DB{} func init(){ var err interface{} db, err = sql.Open("mysql", "root:123@tcp(localhost:3306)/mytest?charset=utf8") if err!=nil{ fmt.Println("数据库连接出错") }else{ fmt.Println("suc sql connect") } } type BaseRes struct{ Code int Msg string Data interface{} } func (b BaseRes) sucSet(m string,c int) BaseRes{ b.Code=c b.Msg=m return b //这里要返回出去才能被外界访问,因为这是一个闭包 } type Article struct{ Title string Author string Time string Content string } type ArticleTwo struct{ Id int Title string Content string } func testRoute(w http.ResponseWriter,r *http.Request){ var sid Article sid.Title="第一女首富的最好时刻又来了" sid.Author="周聪明" sid.Time="2014-12-03" sid.Content="十一年前的今天,当年的胡润百富榜发布,49岁的张茵拥有财富270亿元,成为中国第一位女首富,也是世界上最富有的女性白手起家者。当胡润公布首富人名时,场下只有两三" var sendData BaseRes sendData.Code=10000 sendData.Msg="success" sendData.Data=sid res,_:=json.Marshal(sendData) fmt.Fprintln(w, string(res)) } func testRouteTwo(w http.ResponseWriter,r *http.Request){ rows, _ := db.Query("select * from article") var a ArticleTwo var arr []ArticleTwo //定义一个arr的数组用来存储ArticleTwo类型的数据 for rows.Next() { rows.Scan(&a.Title, &a.Content, &a.Id) //存储ArticleTwo类型的数据 arr=append(arr,a) //循环加入数组中 } var b BaseRes b.Data=arr b=b.sucSet("suc",10000) res,_:=json.Marshal(b) fmt.Fprintln(w, string(res)) } func main() { fmt.Println("正在启动WEB服务...") var mux *routes.RouteMux = routes.New() mux.Get("/",testRoute) mux.Get("/two",testRouteTwo) //http.Handle("/", mux) http.ListenAndServe(":8088", mux) fmt.Println("服务已停止") }
前端工程师、程序员