Golang基础之常量和变量

1、关键字

关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名。

    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

2、变量

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

2.1、声明变量

普通声明变量
变量声明以关键字var开头,变量类型放在变量的后面,行尾无需分号。

var 变量名 数据类型

需要一个一个的指定变量,并且还需要指定数据类型

var name string
var age int
var isOk bool

定义一个变量列表,类型在后面

var c,python,vue bool

全局声明变量
全局方式声明变量可以不被调用

var (
	name string // ""
	age int     // 0
	isOk bool   // false
)

2.2、变量赋值

首先需要声明变量var 变量名 变量类型,而后在根据变量名进行赋值变量名=值

常规方法

package main
import "fmt"


// 批量声明
var (
	name string
	age int
	isOk bool
)

func main()  {
	name = "jack"
	age = 21
	isOk = true
	// Go语言中非全局变量声明后必须使用,不使用就编译不过去
	fmt.Print(isOk) // 在终端输出要打印的内容
	fmt.Println()
	fmt.Printf("name: %s\n",name) // %s 占位符 使用name这个变量的值去替换占位符
 	fmt.Println(age) // 打印完指定的内容之后会在后面加一个换行符
  
  // 声明变量同时赋值
	var s1 string = "王"
	fmt.Println(s1)
  
  // 类型推导(根据值判断该变量是什么类型)
	var s2 = "20"
	fmt.Println(s2)
}

2.3、声明短变量

可省略var,注意:=左侧如果没有声明新的变量,就产生编译错误,必须在函数里使用,格式:

变量名 := 值

实例:

name := "jack"

2.4、匿名变量

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

func foo() (int, string) {
	return 10, "Jie"
}
func main() {
	x, _ := foo()
	_, y := foo()
	fmt.Println("x=", x)
	fmt.Println("y=", y)
}

匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明

注意事项:
1.函数外的每个语句都必须以关键字开始(var,const,func等)
2.:=不能使用在函数外
3._多用于占位,表示忽略值

3、常量

相对于变量,常量就是恒定不变的值,多用于定义程序运行期间不会改变的那些值。常量的声明和变量的声明非常类似,只是把var换成了const

const pi =3.124532

批量声明常量

const (
	statusOK = 200
	notFound = 404
)

特殊声明常量
批量声明常量时,如果某一行声明后没有赋值,默认值就和上一行一致

const (
	n1 = 100
	n2
	n3
	n4 = 101
	n5
)

4、iota

iota是Go语言的常量计数器,只能在常量的表达式中使用
iota在const关键字出现时被重置为0,const中每新增一行常量声明将使iota计数一次(isto可理解为const语句块中的行索引)。使用iota能简化定义,在定义枚举时很有用。

举个例子

const(
	a1 = iota  // 0
	a2         // 1
	a3         // 2
)

几种常见的iota示例
使用_跳过某些值

const  (
	b1 = iota   // 0
	b2          // 1
	_          
	b3          // 3
)

iota声明中间插队

const (
	c1 = iota  // 0
	c2 = 100   // 100
	c3 = iota  // 2
	c4         // 3
)

多个iota定义在一行

const (
   d1,d2= iota + 1,iota + 2 // d1:1,d2:2
   d3,d4= iota + 1,iota + 2 // d3:2,d4:3
)

定义数量级

const (
	_ = iota
	KB = 1 << (10*iota)
	MB = 1 << (10*iota)
	GB = 1 << (10*iota)
	TB = 1 << (10*iota)
	PB = 1 << (10*iota)
)
posted @ 2020-02-11 14:50  jasonminghao  阅读(248)  评论(0编辑  收藏  举报