Go语言常量
常量是指该程序可能无法在其执行期间改变的固定值。这些固定值也被称为文字。
常量可以是任何像一个整型常量,一个浮点常量,字符常量或字符串文字的基本数据类型。还有枚举常量。
常量是一样,只是它们的值不能自己定义后进行修改常规变量处理。
整型常量
一个整数文字可以是十进制,八进制,或十六进制常数。前缀指定基或基数:0x或0X的十六进制,0表示八进制,并没有为十进制。
一个整数文字也可以有一个后缀为U和L的组合,分别为无符号和长整型。后缀可以是大写或小写,并且可以以任意顺序。
这里是整数常量的一些例子:
212 /* Legal */ 215u /* Legal */ 0xFeeL /* Legal */ 078 /* Illegal: 8 is not an octal digit */ 032UU /* Illegal: cannot repeat a suffix */
85 /* decimal */ 0213 /* octal */ 0x4b /* hexadecimal */ 30 /* int */ 30u /* unsigned int */ 30l /* long */ 30ul /* unsigned long */
同时采用十进制形式表示,则必须包括小数点,指数,或两者并用而指数形式表示,则必须包括整数部分,小数部分,或者两者兼而有之。有符号的指数,通过e或E表示
下面是浮点面值的一些例子:
3.14159 /* Legal */ 314159E-5L /* Legal */ 510E /* Illegal: incomplete exponent */ 210f /* Illegal: no decimal or exponent */ .e55 /* Illegal: missing integer or fraction */
以下为例子来说明一些转义字符序列:
package mainimport "fmt"
func main() { fmt.Printf("Hello\tWorld!") }
Hello World!
您可以使用字符串和分隔使用空格打破一个长行成多行。
下面是字符串的一些例子。所有的三种形式是相同的字符串。
"hello, dear""hello, \
dear"
"hello, " "d" "ear"
const variable type = value;
package mainimport "fmt"
func main() { const LENGTH int = 10 const WIDTH int = 5 var area int
area = LENGTH * WIDTH fmt.Printf("value of area : %d", area) }
value of area : 50
Go语言变量
变量是什么,只不是给定到存储区域,我们的程序可以操纵的名称。在Go中每个变量具有特定的类型,它确定的大小和可变的存储器的布局;能确定存储器内存储的值的范围;和组操作可以施加到变量。
一个变量名可以由字母,数字和下划线。它必须以字母或下划线。大写和小写字母是不同的,因为Go是区分大小写的。基于该基本类型在前面的章节中说明的那样,将有以下基本变量类型:
Go编程语言也可以定义各种其他类型的变量,我们将在以后的章节列出,如:枚举,指针,数组,结构,联合,等等。对于本章覆盖,让我们只学习研究的基本变量类型。
在Go中变量定义:
一个变量的定义是指,告诉编译器在哪里,有多少创建存储变量。变量定义指定一个数据类型,并且包含的该类型,如下的一个或多个变量的列表:
var variable_list optional_data_type;
var i, j, k int; var c, ch byte; var f, salary float32; d = 42;
变量可以初始化(分配初始值)在他们的声明。变量的类型是由编译器自动根据传递给它的值判断。初始化包括一个等号后跟一个常量表达式如下:
variable_name = value;
d = 3, f = 5; // declaration of d and f. Here d and f are int
静态类型声明
静态类型的变量声明保障到编译器,有一个变量存在具有给定类型和名称,这样编译器进行进一步的编辑,而不需要对变量的完整细节。变量声明有其意义在编译时止,编译器需要实际的变量声明在链接程序时。
示例
试试下面的例子,其中变量已经被声明为有型,并且已被定义及主要函数内部初始化:
package mainimport "fmt"
func main() { var x float64 x = 20.0 fmt.Println(x) fmt.Printf("x is of type %T\n", x) }
20 x is of type float64
示例
试试下面的例子,其中的变量已经声明没有任何类型的,并已确定在主函数中初始化。如果类型推断的,我们已经初始化的变量y使用:=运算符,x初始化使用=运算符。
package mainimport "fmt"
func main() { var x float64 = 20.0
y := 42 fmt.Println(x) fmt.Println(y) fmt.Printf("x is of type %T\n", x) fmt.Printf("y is of type %T\n", y) }
20 42 x is of type float64 y is of type int
例子
package mainimport "fmt"
func main() { var a, b, c = 3, 4, "foo" fmt.Println(a) fmt.Println(b) fmt.Println(c) fmt.Printf("a is of type %T\n", a) fmt.Printf("b is of type %T\n", b) fmt.Printf("c is of type %T\n", c) }
3 4 foo a is of type int b is of type int c is of type string
lvalue : 引用一个存储器位置的表达式被称为“左值”表达。左值可能显示为任一左手或赋值的右侧。
rvalue : 术语右值是指被存储在存储器中的某些地址的数据值。右值是不能分配给它的值,这意味着右值可能出现在赋值的右侧而不是左侧的表达式。
变量是左值等都可能出现在赋值的左侧。数字文字是右值,因此可能不会被分配,不能出现在左侧。下面是一个有效语句:
x = 20.0
10 = 20