go 协程 mysql_一个go的简单协程

package main

import(

"database/sql"

"fmt"

_ "github.com/go-sql-driver/mysql"

"bytes"

"encoding/json"

"io/ioutil"

"net/http"

"time"

)

type User struct{

ID uint32 `json:"id"`

// Username 用户名 [手机号]

Username string `json:"username"`

// Wxid 微信ID [unionid]

Wxid string `json:"unionid"`

// Openid 微信ID [openid]

Openid string `json:"openid"`

}

func main(){

ch := make(chan User, 100000)

out := make(chan string, 100000)

index := get_data(ch, 1, 100000)

go request_test(out, ch)

go request_test(out, ch)

go request_test(out, ch)

go request_test(out, ch)

go request_test(out, ch)

go request_test(out, ch)

go request_test(out, ch)

go request_test(out, ch)

go request_test(out, ch)

go request_test(out, ch)

go request_test(out, ch)

go request_test(out, ch)

fmt.Println(index)

for i := range out {

fmt.Println(i)

}

}

func get_data(ch chan User, firts int, limit int) int{

db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:33060)/test")

checkErr(err)

var index = 0;

defer db.Close()

//查询数据

rows, err := db.Query("SELECT id, username, wxid, openid FROM xt_user limit ?,?", firts, limit)

checkErr(err)

for rows.Next() {

var user User

rows.Scan(&user.ID, &user.Username, &user.Wxid, &user.Openid)

index = int(user.ID)

ch 

}

return index

}

func request_test(out chan string, ch chan User){

for it := range ch {

m := map[string]string{

"mobile": it.Username,

"unionId":it.Wxid,

"openId": "",

"code": "1235",

}

url := "“

res := Post(url, m, "application/json")

out 

}

}

// 发送POST请求

// url:         请求地址

// data:        POST请求提交的数据

// contentType: 请求体格式,如:application/json

// content:     请求放回的内容

func Post(url string, data interface{}, contentType string) string {

// 超时时间:5秒

client := &http.Client{Timeout: 5 * time.Second}

jsonStr, _ := json.Marshal(data)

resp, err := client.Post(url, contentType, bytes.NewBuffer(jsonStr))

if err != nil {

panic(err)

}

defer resp.Body.Close()

result, _ := ioutil.ReadAll(resp.Body)

return string(result)

}

func checkErr(err error) {

if err != nil {

panic(err)

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值