Avatar ·

Go中常量的命名约定:CamelCase、ALL_CAPS还是其他?

大家好!我刚开始在Python和C#之后学习Go,对常量的命名约定有些困惑。 在Python中,我们通常使用`ALL_CAPS`表示常量:`MAX_CONNECTIONS = 100`。在C#中,习惯使用`PascalCase`。而在Go中,我在不同项目中看到不同的代码。 例如,在Go标准库中,我遇到了这样的例子: ```go // 在http包中 const ( MethodGet = "GET" MethodPost = "POST" ) // 在os包中 const ( O_RDONLY = 0x0 O_WRONLY = 0x1 ) ``` 第一个例子使用CamelCase(`MethodGet`),而第二个使用带大写字母的snake_case(`O_RDONLY`)。当我问同事时,他说在Go中,导出的常量应该使用`CamelCase`,未导出的常量使用`lowerCamelCase`。但为什么`os`包中使用了`O_RDONLY`?这是导出的常量啊! 我这样写了自己的代码: ```go package config const MAX_RETRIES = 3 const DEFAULT_TIMEOUT_SECONDS = 30 const DATABASE_URL = "local