第一节 变量与常量

变量和常量
 
1.标识符与关键字
 
标识符:
在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123。大写字母和小写字母是不同的:heapSort和Heapsort是两个不同的名字。
 
关键字:
关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名。
Go语言中有25个关键字:
  break        default      func         interface    select
  case         defer        go           map          struct
  chan         else         goto         package      switch
  const        fallthrough  if           range        type
  continue     for          import       return       var
 
Go语言中的37个保留字:
    Constants:    true  false  iota  nil
 
    Types:    int  int8  int16  int32  int64 
                  uint  uint8  uint16  uint32  uint64  uintptr
                  float32  float64  complex128  complex64
                  bool  byte  rune  string  error
 
    Functions:   make  len  cap  new  append  copy  close  delete
                 complex  real  imag
                 panic  recover
 
声明语句定义了程序的各种实体对象以及部分或全部的属性。
Go语言主要有四种类型的声明语句:var、const、type和func,分别对应变量、常量、类型和函数实体对象的声明。
 
2.变量
 
什么是变量
程序运行过程中,所有的数据都是保存在内存的。
如果我们要在代码中操作某个数据时,我们可以通过直接访问这个数据的内存地址找到它,也可以通过将这个数据起一个名称,通过这个名称访问该数据。这个名称就是变量名。
变量保存的是数据的内存地址。
 
变量类型
变量的功能是存储数据。不同的变量保存的数据类型可能不同。编程语言经过这么多年发展,已经形成了一套固定的数据类型。常见的变量的数据类型有:整型,浮点型,布尔型等。
 
Go语言中每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。
 
变量声明
Go语言中变量必须要在声明后才能使用。
Go语言的变量声明后必须使用。
 
Go语言的变量声明格式为:
var 变量名 变量类型
 
变量声明以关键字var开头,变量类型放在变量的后面,行尾无需分号。举例:
 
var name string
var age int
var isOk bool
 
变量的初始化
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。
 
每个变量会初始化成其默认类型的0值。比如整型浮点型变量默认值为0。字符串变量的默认值为空字符串。布尔型变量默认为false。切片,函数,指针变量的默认为nil。
 
当然我们也可以在声明变量的时候为其指定初始值。变量初始化的标准格式如下:
 
var 变量名 类型 = 表达式
 
举例:
var name string = “google"
var age int = 18
 
或者 一次初始化多个变量
var name, age = “google”,18
 
类型推导
变量的类型也可以省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。
 
var name = “google"
var age = 18
 
短变量声明
在函数内部,初始化变量可以更简洁,使用:=方式声明并初始化变量。
 
package main
 
import (
        "fmt"
)
// 全局变量m
var m = 100
 
func main() {
        n := 10
        m := 200 // 此处声明局部变量m
        fmt.Println(m, n)
}
 
 
匿名变量
在使用多重赋值时,如果我们想要忽略某个值,可以使用匿名变量 _表示。
 
func foo() (int, string) {
        return 10, "Q1mi"
}
func main() {
        x, _ := foo()
        _, y := foo()
        fmt.Println("x=", x)
        fmt.Println("y=", y)
}
注意:匿名变量不占命名空间,不会分配内存,所以匿名变量之间不存在重复声明。
 
 
常量
相当于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。
常量使用const定义,常量在定义的时候必须赋值。
 
const pi = 3.1415
const e = 2.7182
 
 
多个常量也可以一起声明:
const (
    pi = 3.1415
    e = 2.7182
)
 
 
const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。 例如:
const (
    n1 = 100
    n2
    n3
)
 
//上面示例中,常量n1、n2、n3的值都是100
 
 
iota
 
iota是go语言的常量计数器,只能在常量的表达式中使用。
iota在const关键字出现时将被重置为0.
 const中每新增一行常量声明使用iota计数一次。(iota相当于const语句块中的行索引)
 
几种常见的iota示例:
举个例子:
const (
                n1 = iota //0
                n2        //1
                n3        //2
                n4        //3
        )
 
几个常见的iota示例:
使用_跳过某些值
 
const (
                n1 = iota //0
                n2        //1
                _
                n4        //3
        )
多个iota定义在一行
const (
                a, b = iota + 1, iota + 2 //1,2
                c, d                      //2,3
                e, f                      //3,4
        )
 
 
 
练习代码:
package main

//打印水的沸点

import "fmt"

const boilingF = 212.0

func main() {
var f = boilingF
var c = (f-32)*5/9
fmt.Printf("水的沸点 = %g°F or %g°C
")
}

func fToC( f float64) float64 {
return (f-32) * 5/9
}