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

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

}
相关推荐
研究司马懿1 天前
【云原生】Gateway API高级功能
云原生·go·gateway·k8s·gateway api
梦想很大很大1 天前
使用 Go + Gin + Fx 构建工程化后端服务模板(gin-app 实践)
前端·后端·go
lekami_兰2 天前
MySQL 长事务:藏在业务里的性能 “隐形杀手”
数据库·mysql·go·长事务
却尘2 天前
一篇小白也能看懂的 Go 字符串拼接 & Builder & cap 全家桶
后端·go
ん贤2 天前
一次批量删除引发的死锁,最终我选择不加锁
数据库·安全·go·死锁
mtngt112 天前
AI DDD重构实践
go
Grassto4 天前
12 go.sum 是如何保证依赖安全的?校验机制源码解析
安全·golang·go·哈希算法·go module
Grassto6 天前
11 Go Module 缓存机制详解
开发语言·缓存·golang·go·go module
程序设计实验室7 天前
2025年的最后一天,分享我使用go语言开发的电子书转换工具网站
go
我的golang之路果然有问题7 天前
使用 Hugo + GitHub Pages + PaperMod 主题 + Obsidian 搭建开发博客
golang·go·github·博客·个人开发·个人博客·hugo