正如名称CONSTANTS 所暗示的意思是固定的,在编程语言中也是一样的,即,一旦定义了常量的值,就不能进一步修改。可以有任何基本的常量数据类型,如整数常量、浮点常量、字符常量或字符串字面量。
怎么申报?
常量像变量一样声明,但使用的是const 关键字作为前缀来声明具有特定类型的常量。它不能使用:=语法声明。
例子:
Go
package main
import "fmt"
const PI = 3.14
func main()
{
const GFG = "GeeksforGeeks"
fmt.Println("Hello", GFG)
fmt.Println("Happy", PI, "Day")
const Correct= true
fmt.Println("Go rules?", Correct)
}
Go
package main
import "fmt"
func main()
{
const A = "GFG"
var B = "GeeksforGeeks"
// Concat strings.
var helloWorld = A+ " " + B
helloWorld += "!"
fmt.Println(helloWorld)
// Compare strings.
fmt.Println(A == "GFG")
fmt.Println(B < A)
}
Go
package main
import "fmt"
const Pi = 3.14
func main()
{
const trueConst = true
// Type definition using type keyword
type myBool bool
var defaultBool = trueConst // allowed
var customBool myBool = trueConst // allowed
// defaultBool = customBool // not allowed
fmt.Println(defaultBool)
fmt.Println(customBool)
}
输出:
Hello GeeksforGeeks
Happy 3.14 Day
Go rules? true
无类型和有类型的数字常量:
类型常量就像不可变变量一样只能与相同类型互操作,而无类型常量像字面量一样可以与相似类型互操作。在 Go 中,可以使用或不使用类型来声明常量。以下是显示命名和未命名的类型化和非类型化数字常量的示例。
const untypedInteger = 123
const untypedFloating typed = 123.12
const typedInteger int = 123
const typedFloatingPoint float64 = 123.12
以下是 Go 语言中的常量列表:
- 数字常量(整数常量、浮点常量、复数常量)
- 字符串字面量
- 布尔常量
数字常数:
数字常量是高精度值。由于 Go 是一种静态类型语言,不允许混合数字类型的操作。您不能将float64添加到int ,甚至是int32 到int 。虽然,写1e6*time.Second或math.Exp(1)甚至1<<(‘\t’+2.0)是合法的。在 Go 中,常量与变量不同,其行为类似于常规数字。
数字常量可以是 3 种类型,即整数、浮点数、复数
整数常数:
- 前缀指定基数或基数:十六进制为 0x 或 0X,八进制为 0,十进制为空。
- 整数字面量也可以有一个后缀,它是 U(大写)和 L(大写)的组合,分别用于 unsigned 和 long
- 它可以是十进制、八进制或十六进制常量。
- int 最多可以存储 64 位整数,有时更少。
以下是整数常量的一些示例:
85 /* decimal */
0213 /* octal */
0x4b /* hexadecimal */
30 /* int */
30u /* unsigned int */
30l /* long */
30ul /* unsigned long */
212 /* Legal */
215u /* Legal */
0xFeeL /* Legal */
078 /* Illegal: 8 is not an octal digit */
032UU /* Illegal: cannot repeat a suffix */
复数常数:
复杂常量的行为很像浮点常量。它是整数常量(或参数)的有序对或实对,常量之间用逗号隔开,一对用括号括起来。第一个常数是实部,第二个是虚部。复杂常量 COMPLEX*8 使用8 个字节的存储空间。
例子:
(0.0, 0.0) (-123.456E+30, 987.654E-29)
浮动类型常量:
- 浮点型常量具有整数部分、小数点、小数部分和指数部分。
- 可以以十进制形式或指数形式表示浮动常量。
- 当使用十进制形式表示,必须包含小数点,指数,或两者兼而有之。
- 并且在使用指数形式表示时,必须包括整数部分、小数部分或两者。
以下是 Floating 类型常量的示例:
3.14159 /* Legal */
314159E-5L /* Legal */
510E /* Illegal: incomplete exponent */
210f /* Illegal: no decimal or exponent */
.e55 /* Illegal: missing integer or fraction */
字符串字面量
- Go 支持两种类型的字符串字面量,即“”(双引号样式)和 ‘ ‘(反引号)。
- 字符串可以与+和+ =运算符被级联。
- 一个字符串包含类似于字符字面量字符:普通字符,转义序列,和通用的字符。而这是无类型。
- 字符串类型的零值是空字符串,在字面量可以用“”或“”表示。
- 字符串类型都可以通过使用==、!=和(用于比较相同类型)等运算符进行比较
句法
type _string struct {
elements *byte // underlying bytes
len int // number of bytes
}
显示字符串字面量的示例:
"hello, geeksforgeeks"
"hello, \
geeksforgeeks"
"hello, " "geeks" "forgeeks"
在这里,以上三个语句都是相似的,即它们没有任何特定的类型。
例子:
去
package main
import "fmt"
func main()
{
const A = "GFG"
var B = "GeeksforGeeks"
// Concat strings.
var helloWorld = A+ " " + B
helloWorld += "!"
fmt.Println(helloWorld)
// Compare strings.
fmt.Println(A == "GFG")
fmt.Println(B < A)
}
输出:
GFG GeeksforGeeks!
true
false
布尔常量:
布尔常量类似于字符串常量。它应用与字符串常量相同的规则。区别仅在于它有两个无类型常量 true 和 false。
去
package main
import "fmt"
const Pi = 3.14
func main()
{
const trueConst = true
// Type definition using type keyword
type myBool bool
var defaultBool = trueConst // allowed
var customBool myBool = trueConst // allowed
// defaultBool = customBool // not allowed
fmt.Println(defaultBool)
fmt.Println(customBool)
}
输出:
true
true