这其实应该只有从PHP转Go的才会发生。
在PHP中,客户端发起HTTP请求,服务端接收请求,响应处理,到请求响应完成,结束之后,静态变量就已经销毁,但是如果在Go中也以为是这样就完全不对。

class Users {
	public static $users = [];
	public function GetUser($id) {
		if(!isset($users[$id])) {
			$users[$id] = QueryFromDb($id);
		}
		return $users[$id] ?? [];
	}
}
var users = make([]User,0)
func GetUser(id int)(user User) {
	var exists = false 
	for _, u := range users {
		if u.Id == id {
			user = u 
			exists = true 
			break
		}
	}

	if !exists {
		user = GetFromDb(id)
		users = append(users,user)
	}

	return 
}

这里很坑,users 不会销毁,一直要到 进程结束重启。
如果真的要这样用,还需要手动去清掉,导致同时读写问题。
如果用map方式更坑,会导致并发写入读取map问题。
所以用golang最好不用类似PHP那种静态变量方式节约查询。