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

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))

}
相关推荐
liangbm31 天前
AI-ViewNote:把网课和会议视频自动卷成结构化笔记
ai·typescript·go·软件构建·开源软件·react·桌面软件
我叫黑大帅1 天前
Gin 实战入门:从环境搭建到企业级常用特性全解析
后端·面试·go
我叫黑大帅1 天前
Gin 日志体系详解
后端·面试·go
F1FJJ1 天前
Shield CLI v0.3.3 新增 PostgreSQL 插件:浏览器里管理 PG 数据库
网络·网络协议·docker·postgresql·容器·go
mCell1 天前
【万字长文】从 AI SDK 到 mini-opencode:一次很巧的 Go Agent 架构实践
架构·go·agent
jump_jump2 天前
深入理解 Go Context:从原理到实战(基于 Go 1.26)
go·源码
哈里谢顿2 天前
golang目前遇到的面试题
go
哈里谢顿2 天前
python与golang性能差异对比
go
前端Hardy3 天前
Wails v3 正式发布:用 Go 写桌面应用,体积仅 12MB,性能飙升 40%!
前端·javascript·go
golang学习记3 天前
Go 语言生产环境必备包清单
go