Home  >  Article  >  Does Go language have static global variables?

Does Go language have static global variables?

百草
百草Original
2023-07-11 15:37:361796browse

The Go language does not have static global variables. It uses a more flexible way to handle the need for global variables. Global variables are usually declared at the package level, that is, variables declared outside the function. These Global variables are visible throughout the package and can be used in any function in the package.

Does Go language have static global variables?

The operating environment of this article: Windows 10 system, go1.20 version, DELL G3 computer.

Go language does not have static global variables, it uses a more flexible way to handle the needs of global variables. In Go language, global variables are usually declared at the package level, that is, variables declared outside functions. These global variables are visible throughout the package and can be used in any function in the package.

However, the Go language emphasizes encapsulation and maintainability and discourages the use of global variables. Instead, the Go language encourages the use of local variables and function parameters to pass data. This approach is more conducive to code organization and testing, and can avoid concurrency problems that may arise from sharing data between multiple coroutines.

When we really need to use global state throughout the entire program, the Go language provides a very concise way to achieve it. You can define a variable at the package level and use it as a local variable in a package-level function. This way, the variable is initialized each time the function is called, but its state remains unchanged. Because the variable is restricted to the scope of the function, other functions cannot directly access it, thus achieving an effect similar to a static global variable.

The Go language does not have static variables, but similar effects are often needed in the actual process, such as configuration information, etc. The following writing method uses reading and writing username (username) as an example to achieve an effect similar to a static variable.

First look at the writing method of calling in main.go:

//在main函数中set好username的值,然后在其他函数中获取username的值
//main函数中进行set操作
func main() {
config.WithConfig().SetConfig()
initApp()
}
//该方法进行get操作
func initApp(){
config.WithConfig().GetConfig()
}

Next, let’s look at the writing method of config.go:

package config
//配置结构体
type Config struct {
username string
}
//关键在此,声明一个全局变量所有的读写操作实际上都是在操作c
var c *Config
func init() {
c = new(Config)
}
//方便链式操作
func WithConfig() *Config {
return c.WithConfig()
}
func (c *Config) WithConfig() *Config {
return c
}
//写
func (c *Config) SetConfig(name string) {
c.username = name
}
//读
func (c *Config) GetConfig() string {
return c.username
}

The above is the detailed content of Does Go language have static global variables?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn