1、什么变量

变量来源于数学,从根本上说,变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。

1.1变量声明

Go 语言变量名由字母、数字、下划线组成,其中首个字母不能为数字。

第一种,指定变量类型,声明后若不赋值,使用默认值。

var v_name v_type
v_name = value

第二种,根据值自行判定变量类型。

var v_name = value

第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误。

v_name := value

// 例如
var a int = 10
var b = 10
c : = 10

(冒号和等号的组合:=),用于明确表达同时进行变量声明和初始化的工作。

1.2、多变量声明

1、类型相同多个变量, 非全局变量

var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3

2、自动推断,不需要显示声明类型

var vname1, vname2, vname3 = v1, v2, v3
vname1, vname2, vname3 := v1, v2, v3 //出现在:=左侧的变量不应该是已经被声明过的,否则会导致编译错误

3、类型不同多个变量, 全局变量, 局部变量不能使用这种方式

var (
vname1 v_type1
vname2 v_type2
)

实例如下:

package main

var x, y int
var ( //这种只能出现在全局变量中,函数体内不支持
a int
b bool
) var c, d int = 1, 2
var e, f = 123, "hello" //这种不带声明格式的只能在函数体中出现
//g, h := 123, "hello" func main(){
g, h := 123, "hello"
fmt.Println(g) //输出变量g
fmt.Println(h) //输出变量h
}

1.3、变量赋值与初始化

在变量声明时,就给变量指定一个值,这个过程叫变量初始化,如:

package main

//初始化变量c的值为2;变量d的值为2。
var c, d int = 1, 2
//初始化变量e的值为123;变量f的值为'hello'。
var e, f = 123, "hello" func main(){
//初始化变量g的值为123;变量h的值为'hello'。
g, h := 123, "hello"
fmt.Println(g) //输出变量g
fmt.Println(h) //输出变量h
}

在Go语法中,变量初始化和变量赋值是两个不同的概念。下面为声明一个变量之后的赋值过程:

package main

import "fmt"

func main() {
//初始化变量g的值为123;变量h的值为'hello'。
g, h := 123, "hello"
g = 234 //将 234 赋值给变量g
fmt.Println(g) //输出变量g
fmt.Println(h) //输出变量h
}

1.4、匿名变量

在Go语言中,单个的下划线“_”是一个特殊的变量,我们称之为匿名变量(anonymous variable),匿名变量不占用命名空间,不会分配内存。匿名变量与匿名变量之间也不会因为多次声明而无法使用

我们在使用传统的强类型语言编程时,经常会出现这种情况,即在调用函数时为了获取一个值,却因为该函数返回多个值而不得不定义一堆没用的变量。在Go中这种情况可以通过使用匿名变量来避免从而让代码看起来更加的优雅。

假设getTime()函数的定义如下,它返回2个值,分别为hour和minute:

func getTime() (hour, minute int) {
return 11,20
}

若只想获得hour,则:

h,_ := getTime()

2、常量

在Go语言中,常量是指编译期间就已知且不可改变的值。常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型等。

2.1、 常量定义

常量的定义格式:

const identifier [type] = value

你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。举例:

const Pi float64 = 3.14159265358979323846
const zero = 0.0 // 无类型浮点常量
const Pi, zero float32 = 3.14159265, 0.0 // 常量的多重赋值 // Pi = 3.14159265, zero = 0.0, name = "roy", 无类型整型和字符串常量
const Pi, zero, name = 3.14159265, 0.0, "roy"

2.2、枚举

定义一组常量,在Go语言中叫做枚举,例如:

	const (
Sunday = 0
Monday = 1
Tuesday = 2
Wednesday = 3
Thursday = 4
Friday = 5
Saturday = 6
)

2.3、预定义常量

Go语言预定义常量:true、false和iota。其中true、false是两个bool类型的值,这个我们在后面的“数据类型”这一节会讲到。

iota是一个可以被编译器修改的常量。在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1,举例:

package main

import (
"fmt"
) func main() {
const (
Sunday = iota
Monday = iota
Tuesday = iota
Wednesday = iota
Thursday = iota
Friday = iota
Saturday = iota
) const (
a = iota
b = iota
)
fmt.Println(Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)
fmt.Println(a, b) }

以上代码输出:

0 1 2 3 4 5 6
0 1

最新文章

  1. VMware下Windows Server 2012添加新磁盘
  2. VC++ : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>
  3. Azure China (5) 管理Azure China Powershell
  4. sql联合查询多个表
  5. iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示
  6. OC中代理的使用
  7. hostapd移植与使用
  8. 微软职位内部推荐-Senior SDE for Windows App Experience
  9. 关于Excel中的需求或者是用例导入到QC中遇到的问题
  10. 问题-提示“adodataset.command”
  11. Node.js权威指南 (12) - Node.js中的其他模块
  12. POJ 2762推断单个联通(支撑点甚至通缩+拓扑排序)
  13. Godaddy Drupal Update
  14. linux下的vim使用笔记
  15. JQuery中一个简单的表单验证的实例
  16. Java 数据库编程 ResultSet 的 使用方法
  17. ASP.NET没有魔法——ASP.NET MVC IoC
  18. Java学习笔记3(数组)
  19. CF932 E. Team Work 结题报告
  20. NDK历史版本下载方法

热门文章

  1. 自建CDN Xnign产品指标
  2. Nmap使用教程(二)
  3. .net core webapi搭建(1)
  4. NOI2.4 2011
  5. Dynamics CRM CE 怎样从 UCI 改为 classic UI
  6. Scala 学习(7)之「trait (1) 」
  7. ajax--->请求异常 jQuery提示parsererror错误解决办法
  8. 平滑重启更新(GR机制)
  9. SpringBoot2.x整合JDBC及初始化data.sql和schema.sql脚本
  10. asp.net core 2.2升到3.1遇到的问题小记