go语言开发基础4 - 之go语言里的标识符、保留关键字、变量与常量

一、go语言里标识符说明

go语言里标识符以字母或下划线开头,大小写敏感,如:

var a = "xxx"      // 变量名首字母非大写表示这个变量不可以被导出(这个变量只可以在当前包里被调用)。
var A = "xxx"      // 变量名首字母大写表示这个变量可以被导出(其他包里可以引用这个变量)。
var _a = "xxx" // 变量可以以下划线开头,这样的变量名不可以被导出。
_ := "xxx" // _在go语言是特殊标识符,用来忽略结果。

 

二、go语言里保留的关键字

break:跳出巡检
default:
func:定义函数关键字
interface:接口类型
select:
case:
defer:
go:启动一个线程的关键字
map:map类型
struct:结构体
chan:管道
else:流程控制
goto:跳转
package:定义包
switch:循环;
const:定义常量
fallthough
if:流程控制
range:循环
continue:跳过当前循环,进入下一循环
type:定义类型关键字
for:循环
import:导入包关键字
return:返回值
var: 定义变量关键字
error:错误类型

 

此外,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语言里面定义常量通过const关键字来定义,常量是只读的不能修改。

        const只能定义:布尔型,数字型(int相关类型、浮点类型、complex)和字符串

        语法:const identifier [type] = value,其中type可以省略

 

常量定义:

const test_a int = 123        // 单行常量定义

const (      // 多行常量定义
    pi = 3.141592657
    str = "hello string"
    add = 3+5   
)

const (     // 更专业的定义常量
    a = iota    // a=0
    b   // b=1
    c   // c=2
    d   // d=3
)
// 1.使用_跳过某些值
const (
    n1 = iota //0
    n2        //1
    _         // 下划线表示跳过当前的常量
    n4        //3
)

 

 

四、变量

Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。

 

变量声明:

// 1.单个变量声明
var name string     // 声明字符串类型的变量
var age int         // 声明整数类型的变量
var ret bool        // 声明布尔类型的变量

// 2.批量声明变量
var (
    a int
    b bool
    c string
    d float32
)

 

变量默认值:

var (
    a int      // 默认值为:0
    b string    //默认值为:""
    c bool      //默认值为:false
)

 

变量初始化:

1.单个变量初始化示例:
var name string = "追梦人"
var age int = 18

2.多个变量初始化示例:
var name, age = "追梦人", 18

  

类型推倒:

有时候我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。

var name = "追梦人"
var age = 18

  

短变量声明:

在函数内部,可以使用更简略的 := 方式声明并初始化变量(注意: :=定义变量的方式只可以在函数里使用,在函数外边使用会报错)。

package main

import (
    "fmt"
)
// 定义全局变量m
var m = 100

func main() {
    n := 10
    m := 200    // 此处声明局部变量m
    fmt.Println(m, n)
}

说明:n := 10为var n int \n(换行符) n = 10的缩写,这种简写方法只可以在函数里使用,全局不支持这种写法。

  

匿名变量:

在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线_表示,例如:

func foo() (int, string) {
    return 18, "追梦人"
}
func main() {
    x, _ := foo()
    _, y := foo()
    fmt.Println("x=", x)
    fmt.Println("y=", y)
}

匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。 (在Lua等编程语言里,匿名变量也被叫做哑元变量。)

注意事项:

  • 函数外的每个语句都必须以关键字开始(var、const、func等)
  • :=不能使用在函数外。
  • _多用于占位,表示忽略值。

 

五、变量作用域

  • 全局变量

全局变量是定义在函数外部的变量,它在程序整个运行周期内都有效。 在函数中可以访问到全局变量。

 

  • 局部变量

函数内定义的变量在该函数内可以正常调用,在该函数外无法调用。

如果局部变量和全局变量重名,在函数内优先调用函数内部的变量,在函数外只能调用全局变量。

 

posted @ 2020-04-20 13:12  欧-阳  阅读(282)  评论(0)    收藏  举报