go函数在一个http过程中被多次调用,如果避免多次执行

fancyecommerce · · 1795 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

在go做http api的过程中,我有一个函数,会被多次调用,多次调用的值是固定的 ``` func goo(st string) int64{ var x int64 if st == "A" { x := 1+2+3+...+100000 // 这里是一系列的计算 } else { x := 1+2+3+...+200000 // 这里是一系列的计算 } return x // 这里是一些逻辑,计算的值赋值给result } ``` 我希望第一次计算的值可以保存到一个变量里面,然后第二次调用goo(),直接返回即可,因此,我进行了修正: ``` var x int64 func goo(st string) int64{ if x !=0 { return x } if st == "A" { x := 1+2+3+...+100000 // 这里是一系列的计算 } else { x := 1+2+3+...+200000 // 这里是一系列的计算 } return x // 这里是一些逻辑,计算的值赋值给result } ``` 这样修改后,一个http请求中虽然调用了goo多次,但是只计算一次。 但是,这个会影响其他的http,其他的http直接从这里取值了,当我在其他的http api请求中传递不同的参数,返回的和第一个http api请求是一样的,这和php太不一样了 我想问:我如何实现在一个http api请求中 goo() 函数里面x的计算只计算一次,而且,不影响其他的http api请求 ps: 我是phper出身,多谢各位帮助

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1795 次点击  
加入收藏 微博
13 回复  |  直到 2018-04-07 14:37:46
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传