声明全局变量的时候注意一下好不

before

Go 复制代码
package router

import (
	"IM_for_imageProcess/api-01/utitl"
	"encoding/json"
	//"errors"
	"fmt"
	"net/http"
	"time"
)

type History struct {
}

//var senderIdd int
//var receiverIdd int
//var messageContent string
//var createAt time.Time
//var isReceived string
type HistoryRes struct{
	SenderIdd int `json:"sender_idd"`
	ReceiverIdd int `json:"receiver_idd"`
	MessageContent string `json:"message_content"`
	CreateAt time.Time `json:"create_at"`
	IsReceived string `json:"is_received"`

}
var HistoryResList []HistoryRes

func reverse(arr []HistoryRes)  {

	i:=0
	j:=len(arr)-1

	for{
		if i < j{
			arr[i],arr[j]=arr[j],arr[i]
			i=i+1
			j=j-1
		} else{
			break
		}


	}



}







func (this *History) GetHistoryMessage(w http.ResponseWriter, r *http.Request) {
	err := r.ParseForm()
	if err != nil {
		return
	}
	w.Header().Set("Access-Control-Allow-Origin", "*")

	w.Header().Set("Access-Control-Allow-Credentials", "true")


	requestMap := r.Form

	senderId := requestMap["senderId"][0]

	receiverId := requestMap["receiverId"][0]
	//var HistoryResList []HistoryRes



	//Id             | int(11)    | NO   | PRI | NULL    | auto_increment |
	//| senderId       | int(11)    | YES  |     | NULL    |                |
	//| receiverId     | int(11)    | YES  |     | NULL    |                |
	//| messageContent | text       | YES  |     | NULL    |                |
	//| createAt       | datetime   | YES  |     | NULL    |                |
	//| isReceived     | varchar(3) | YES  |     | yes     |                |




	//rows, err := utitl.Db.Query("select senderId,receiverId,messageContent,createAt,isReceived from MessageTable where senderId = ? and receiverId=? or receiverId=? and senderId=? order by createAt desc limit 15", senderId,receiverId,receiverId,senderId)

	rows, err := utitl.Db.Query("select senderId,receiverId,messageContent,createAt,isReceived from MessageTable where senderId = ? and receiverId=? or receiverId=? and senderId=? order by createAt desc limit 15", senderId,receiverId,senderId,receiverId)

	if err != nil {
		fmt.Println(fmt.Sprintf("select tweetId from Tweet error: %v\n", err))
		//return nil,errors.New(fmt.Sprintf("select tweetId from Tweet error: %v\n", err))
	}
	var senderIdd int
	var receiverIdd int
	var messageContent string
	var createAt time.Time
	var isReceived string
	for rows.Next() {
		err := rows.Scan(&senderIdd,&receiverIdd, &messageContent, &createAt,&isReceived)
		if err != nil {
			fmt.Printf("scan failed, err:%v\n", err)
			//return nil,nil ,err
			//return nil, err
			//return nil,err
		}

		historyRes:=HistoryRes{
			SenderIdd:senderIdd,
			ReceiverIdd:receiverIdd,
			MessageContent:messageContent,
			CreateAt:createAt,
			IsReceived:isReceived,
		}
		//tweetDetail := model.TweetDetail{
		//	TweetId:  tweetId,
		//	UserId:   star,
		//	Content:  content,
		//	CreateAt: createAt,
		//	PostTime:postTime,
		//}
		//哈哈 这个就是我一个朋友的推文
		//common.MapTweetDetail[createAt]=tweetDetail
		HistoryResList=append(HistoryResList,historyRes)

		//fmt.Println("tweetDetail=====",tweetDetail)
	}

	fmt.Println("len(HistoryResList)===",len(HistoryResList))

	reverse(HistoryResList)

	//sort.Stable(sort.Reverse(sort.IntSlice(HistoryResList)))


	HistoryResListMar,err:=json.Marshal(HistoryResList)




	//timeElapse:=time.Since(timeStart)
	//fmt.Println("timeElapse=====",timeElapse)
	//timeElapse=rpc获取friendsList +从tweettable 中获取明星的信息 +从news_feed表中获取普通人的信息+对两个表的信息排序

	fmt.Fprintf(w,string(HistoryResListMar))

}

after:

after:

Go 复制代码
package router

import (
	"IM_for_imageProcess/api-01/utitl"
	"encoding/json"
	//"errors"
	"fmt"
	"net/http"
	"time"
)

type History struct {
}

//var senderIdd int
//var receiverIdd int
//var messageContent string
//var createAt time.Time
//var isReceived string
type HistoryRes struct{
	SenderIdd int `json:"sender_idd"`
	ReceiverIdd int `json:"receiver_idd"`
	MessageContent string `json:"message_content"`
	CreateAt time.Time `json:"create_at"`
	IsReceived string `json:"is_received"`

}
//var HistoryResList []HistoryRes

func reverse(arr []HistoryRes)  {

	i:=0
	j:=len(arr)-1

	for{
		if i < j{
			arr[i],arr[j]=arr[j],arr[i]
			i=i+1
			j=j-1
		} else{
			break
		}


	}



}







func (this *History) GetHistoryMessage(w http.ResponseWriter, r *http.Request) {
	err := r.ParseForm()
	if err != nil {
		return
	}
	w.Header().Set("Access-Control-Allow-Origin", "*")

	w.Header().Set("Access-Control-Allow-Credentials", "true")


	requestMap := r.Form

	senderId := requestMap["senderId"][0]

	receiverId := requestMap["receiverId"][0]
	var HistoryResList []HistoryRes



	//Id             | int(11)    | NO   | PRI | NULL    | auto_increment |
	//| senderId       | int(11)    | YES  |     | NULL    |                |
	//| receiverId     | int(11)    | YES  |     | NULL    |                |
	//| messageContent | text       | YES  |     | NULL    |                |
	//| createAt       | datetime   | YES  |     | NULL    |                |
	//| isReceived     | varchar(3) | YES  |     | yes     |                |




	//rows, err := utitl.Db.Query("select senderId,receiverId,messageContent,createAt,isReceived from MessageTable where senderId = ? and receiverId=? or receiverId=? and senderId=? order by createAt desc limit 15", senderId,receiverId,receiverId,senderId)

	rows, err := utitl.Db.Query("select senderId,receiverId,messageContent,createAt,isReceived from MessageTable where senderId = ? and receiverId=? or receiverId=? and senderId=? order by createAt desc limit 15", senderId,receiverId,senderId,receiverId)

	if err != nil {
		fmt.Println(fmt.Sprintf("select tweetId from Tweet error: %v\n", err))
		//return nil,errors.New(fmt.Sprintf("select tweetId from Tweet error: %v\n", err))
	}
	var senderIdd int
	var receiverIdd int
	var messageContent string
	var createAt time.Time
	var isReceived string
	for rows.Next() {
		err := rows.Scan(&senderIdd,&receiverIdd, &messageContent, &createAt,&isReceived)
		if err != nil {
			fmt.Printf("scan failed, err:%v\n", err)
			//return nil,nil ,err
			//return nil, err
			//return nil,err
		}

		historyRes:=HistoryRes{
			SenderIdd:senderIdd,
			ReceiverIdd:receiverIdd,
			MessageContent:messageContent,
			CreateAt:createAt,
			IsReceived:isReceived,
		}
		//tweetDetail := model.TweetDetail{
		//	TweetId:  tweetId,
		//	UserId:   star,
		//	Content:  content,
		//	CreateAt: createAt,
		//	PostTime:postTime,
		//}
		//哈哈 这个就是我一个朋友的推文
		//common.MapTweetDetail[createAt]=tweetDetail
		HistoryResList=append(HistoryResList,historyRes)

		//fmt.Println("tweetDetail=====",tweetDetail)
	}

	fmt.Println("len(HistoryResList)===",len(HistoryResList))

	reverse(HistoryResList)

	//sort.Stable(sort.Reverse(sort.IntSlice(HistoryResList)))


	HistoryResListMar,err:=json.Marshal(HistoryResList)




	//timeElapse:=time.Since(timeStart)
	//fmt.Println("timeElapse=====",timeElapse)
	//timeElapse=rpc获取friendsList +从tweettable 中获取明星的信息 +从news_feed表中获取普通人的信息+对两个表的信息排序

	fmt.Fprintf(w,string(HistoryResListMar))

}
相关推荐
钟智强2 小时前
红队实战复盘:如何运用【火尖枪】高效突破复杂登录防线
服务器·安全·web安全·http·go·php·bruteforce
Grassto2 小时前
Go Module 基础概念全解析:module、version、sum 是什么
golang·go·go module
码luffyliu14 小时前
从 2 小时价格轮询任务通知丢失,拆解 Go Context 生命周期管控核心
后端·golang·go
踏浪无痕1 天前
一个 Java 老兵转 Go 后,终于理解了“简单”的力量
后端·程序员·go
代码扳手1 天前
一次线上事故后的反思:Go 项目中如何构建可靠的单元测试
后端·go
Penge6661 天前
Go JSON 序列化大整数丢失精度分析
后端·go
ServBay2 天前
掌握这9个GO技巧,代码高效又高能
后端·go
Grassto2 天前
一个 import 语句,引发的 Go 第三方包加载之旅
golang·go·go module
岁月的眸3 天前
【科大讯飞声纹识别和语音内容识别的实时接口实现】
人工智能·go·语音识别