Go语言 在函数内部或外部声明变量

ef1yzkbh  于 2023-11-14  发布在  Go
关注(0)|答案(1)|浏览(167)

举例来说:

  1. func internall(a string) int {
  2. someMap := map[string]int {
  3. "1" : 1,
  4. ...
  5. "1000000" : 1000000,
  6. }
  7. return someMap[a]
  8. }

字符串

  1. var someMap = map[string]int {
  2. "1" : 1,
  3. ...
  4. "1000000" : 1000000,
  5. }
  6. func externall(a string) int {
  7. return someMap[a]
  8. }


问:如果这个函数经常被调用并且是多线程的,会对优化有影响吗?如果一个变量在函数内部声明,这会导致Map被多次创建吗?

w1e3prcc

w1e3prcc1#

一般来说,如果map很大或者函数被频繁调用,那么将MAP声明为global variable (outside the function)而不是在函数中声明会更有效。
为什么
当MAP声明为inside the function (in internal1) as a local variable时,每次调用函数时都会创建并初始化它。这可能会导致内存和处理时间方面的开销。这是一个问题。

全局变量的另一种方式:

当MAP被声明为全局变量时,它只会在程序启动时被创建和初始化一次。这意味着所有线程共享同一个示例。但是要小心同步和竞争条件。Go标准库中的sync.Map可以用于多线程。

相关问题