定义常量
5-89"I love Go"67.89

考虑如下程序:

50"I love Go"50"I love Go"50"I love Go"

关键字 const 修饰的名字为常量,不能被重新赋予任何值。 因此下面的程序会报错:cannot assign to a。

常量的值必须在编译期间确定。因此不能将函数的返回值赋给常量,因为函数调用发生在运行期。

math.Sqrt(4)math.Sqrt(4)const b = math.Sqrt(4)error main.go:11: const initializer math.Sqrt(4) is not a constant.
字符串常量

字符串常量最简单的常量,通过了解字符串常量可以更好的理解常量的概念。

""Hello World""Sam"

字符串常量是什么类型呢?答案是 无类型(untyped)。

"Hello World"
"Hello World"
name"Sam"
var name = "Sam"name"Sam"

有没有办法创建一个有类型(typed)的常量?答案是:Yes。下面的代码创建了一个有类型常量

上面的代码中, typedhello 是一个字符串类型的常量。

Go是强类型语言。在赋值时混合使用类型是不允许的。让我们通过以下代码说明这是什么意思。

defaultName"Sam""Sam"stringdefaultNamestring
myStringstring

译者注:可以通过 type NewType Type 的语法来创建一个新的类型。类似 C 语言的 typedef 。

customNamemyString"Sam""Sam"customNamemyString
stringdefaultNamemyStringcustomNamemyStringstringcustomName = defaultNamemain.go:10: cannot use defaultName (type string) as type myString in assignment
布尔常量

布尔常量与字符串常量(在概念上)没有区别。布尔常量只包含两个值:true 和 false。字符串常量的规则也同样适用于布尔常量,这里不再赘述。下面的代码解释了布尔常量:

上面的程序很好理解,这里就不过多解释了。

数值常量

数值常量(Numeric constants)包括整数,浮点数以及复数常量。数值常量有一些微妙之处。

让我们看一些例子使事情变得明朗。

const a5aa
i's type int, f's type float64, c's type complex128
5.6float64"Sam"stirng

现在应该很清楚下面的程序是如何工作的了:

 

a5a5.055 + 0iaavar intVar int = aaintaintvar complex64Var complex64 = aacomplex64acomplex64
数值表达式

数值常量可以在表达式中自由的混合和匹配,仅当将它们赋值给变量或者在代码中明确需要类型的时候,才需要他们的类型。

5.985.9/80.7375aa's type float64 value 0.7375

 

 

 

 

本文摘自:https://blog.csdn.net/u011304970/article/details/74857146