Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性。在数学概念中,变量表示没有固定值且可改变的数。但从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存。

声明变量的一般形式是使用 var 关键字:

var name type

其中,var 是声明变量的关键字,name 是变量名,type 是变量的类型。
需要注意的是,Go语言和许多编程语言不同,它在声明变量时将变量的类型放在变量的名称之后。这样做的好处就是可以避免像C语言中那样含糊不清的声明形式,例如:int* a, b; 。其中只有 a 是指针而 b 不是。如果你想要这两个变量都是指针,则需要将它们分开书写。而在 Go 中,则可以和轻松地将它们都声明为指针类型:

var a, b *int

声明变量有几种形式:
正常格式:

var 变量名 变量类型

批量格式

var (a intb stringc []float32d float64...
)

简短格式:

名字 := 表达式
package mainimport "fmt"func main() {//变量测试//小块内存 可以改变,不可以改变的是常量// var 变量名 类型var num1 intnum1 = 30fmt.Printf("num1 = %d\n", num1)var num2 int = 15fmt.Printf("num2 = %d\n", num2)// 虽然go语言是静态余语言但是支持类型的自动判断var num3 = 30fmt.Printf("num3 = %d\n", num3)fmt.Print("var test")// 使用类型腿短 := ,这种方式只能用于函数体内,不能用于全局变量的盛行声明num4 := 45fmt.Printf("type = [%T]num4 = [%d]\n", num4, num4)// 变量集合声明var (studentName = "xiaoming"teacherName = "jianguo"studentAge  = 18teacherAge  = 28)fmt.Printf("student name = [%s] age = [%d], Teacher name = [%s] age = [%d]\n",studentName, studentAge, teacherName, teacherAge)}
package mainimport "fmt"func main() {var num intnum = 100fmt.Printf("num = %d &"+" = %p\n", num, &num)//   常量的定义// 常量尽量都使用大写的定义,定义之后不允许修改const PI = 3.14const PATH string = "http:www.baidu.com"fmt.Println(PATH)// 定义一组常量//    变量的集合const C1, C2, C3 = 100, 3, "haha"const (NAME     = "xiaoming"LINKMODE = 1)// 一组常量,如果某个常量没有给初始值,就会默认和上一个常量保持一致的值const (a int = 100bc string = "ruby"de)fmt.Printf("type = %T, b = [%d]\n", a, a)fmt.Printf("type = %T, b = %d\n", b, b)fmt.Printf("type = %T, b = %s\n", d, d)fmt.Printf("type = %T, b = %s\n", e, e)
}

特殊的常量 iota

package mainimport "fmt"func main() {// iota 特殊常量,可以被编译器自动修改的常量,每当定义一个const, iota会自动清零// 在同一个变量集合中,iota随着变量的定义一直递增,直到遇到下一个const在清零const (a = iotab = iotac = iota)fmt.Println(a)fmt.Println(b)fmt.Println(c)const (e = iotaf // 默认和上一行一致g = iota)fmt.Println(e)fmt.Println(f)fmt.Println(g)//  枚举实现const (MALE = iotaFEMALEUNKNOWM)fmt.Println(MALE, FEMALE, UNKNOWM)}
package mainimport "fmt"func f1(f func()) {fmt.Println("this is f1")f()
}func f2(x, y int) {fmt.Println("this is f2")fmt.Print(x + y)
}func f3(f func(int, int), x, y int) func() {tmp := func() {fmt.Println("hello")f(x, y)}return tmp
}func main() {//基本的数据类型//   1.布尔类型//    2.数值类型//    3.字符串// 4.复合数据类型//   array slice mao function pointer struct interface channel...// boolvar a bool = truefmt.Printf("%t\n", a)// byte == uint8//   rune == int32var b rune = 100fmt.Println(b)// 匿名函数,立即执行函数func(x, y int) {fmt.Println(x + y)}(1, 2)// 闭包f1(f3(f2, 2, 3))}

go语言中变量的定义和使用相关推荐

  1. 单片机c语言字符,单片机C语言中变量的定义方法解析

    描述 1.C语言中变量的定义方法 -C语言中变量定义语法为: #pragma rambank0 :即以关键词#pragma开始,rambank0指明资料区块为第0块. unsigned char m_ ...

  2. 单片机c语言怎么定义字符串,单片机C语言中变量的定义方法解析

    1.C语言中变量的定义方法 -C语言中变量定义语法为: #pragma rambank0 :即以关键词#pragma开始,rambank0指明资料区块为第0块. unsigned char m_acc ...

  3. main c语言中变量的定义,C语言中在main函数中定义的变量是全局变量么_后端开发...

    PHP 和 JavaSript 区别_后端开发 PHP是一种创建动态交互性站点的强有力的服务器端脚本语言,主要用于Web开发领域,而JavaSript是一种具有函数优先的轻量级,解释型或即时编译型的高 ...

  4. 在c语言中函数的定义变量的值为,变量定义(C语言中变量的声明和定义)

    变量定义(C语言中变量的声明和定义),哪吒游戏网给大家带来详细的变量定义(C语言中变量的声明和定义)介绍,大家可以阅读一下,希望这篇变量定义(C语言中变量的声明和定义)可以给你带来参考价值. 3.函数 ...

  5. c语言中变量的大小,C语言变量定义

    C语言变量定义 程序设计就是让计算机按照一定的指令来进行工作,可以说数据的处理是程序设计的主要任务.那么数据是怎么加入到计算机的内存中呢?下面是小编分享的C语言变量定义,欢迎大家阅读!更多相关信息请关 ...

  6. C语言定义变量用什么字母,C语言中变量名有什么要求 C语言中,什么是变量和变量名?它们的区别是什么?...

    导航:网站首页 > C语言中变量名有什么要求 C语言中,什么是变量和变量名?它们的区别是什么? C语言中变量名有什么要求 C语言中,什么是变量和变量名?它们的区别是什么? 相关问题: 匿名网友: ...

  7. c语言变量定义位置区别,C语言中变量定义的位置(C89和C99的区别)

    C语言中变量定义的位置(C89和C99的区别) 在C++和JAVA中,按照语法,我们可以把变量定义在任何位置,所以很多人习惯了"哪里使用哪里定义"的这种做法,所以当用C语言进行编程 ...

  8. 如何理解c语言的变量,C语言中变量的理解.PDF

    C语言中变量的理解 年第 期 建建 电电 脑脑 2011 3 59 C 语言中变量的理解 潘 莉 河南经贸职业学院 东校区 河南郑州 ( 冤 450009 ) 摘 要 在很多 级语言的基础语法中都有变 ...

  9. C语言中变量的储存类别

    C语言中变量的储存类别 C语言中变量的储存类别 1.动态存储方式与静态动态存储方式: 从变量值存在的作时间(即生存期)角度来分,可以分为静态存储方式和动态存储方式. 静态存储方式:是指在程序运行期间分 ...

最新文章

  1. glob.glob 函数读取文件
  2. TPROXY与ip_conntrack
  3. python 3d绘图 范围_python – 在3D绘图中绘制所有三个轴上的分布轮廓
  4. Docker知识3:Docker的体系简介
  5. 【Consul】Consul实践指导-健康检查(Checks)
  6. CIO实施精细化管理的五个要点
  7. 强烈推荐:SiteServer CMS开源免费的企业级CMS系统!
  8. Python | 多种编码文件(中文)乱码问题解决
  9. jsf 导航_JSF动作方法导航示例教程– from-action标记
  10. 3-8-循环队列-栈和队列-第3章-《数据结构》课本源码-严蔚敏吴伟民版
  11. ORACLE完整数据库实例迁移
  12. java使用lua脚本操作 redis_Redis使用lua脚本
  13. 玩转BIOS与注册表
  14. 学习笔记MOOCM《计算机程序设计C++》第三周中级练习
  15. 此为四川大学110周年校庆大型文艺晚会朗诵文稿
  16. 【嵌入式linux】使用4G模块EC20自适应运营商和ppp拨号上网
  17. 推箱子游戏 java源代码_java推箱子游戏源代码(含推箱子的判断)
  18. 数据分析系列学习之My SQL(一)初识My SQL
  19. matlab实现图片锐化处理
  20. web前端《叮叮书店》编写

热门文章

  1. Tinyhttpd源码--实现http服务器
  2. CodeForce 534C Polycarpus' Dice (数学推理)
  3. Object Detection中的IOU
  4. ubuntu安装USB转串口驱动(PL2303)
  5. uva 12508 - Triangles in the Grid(几何+计数)
  6. 老男孩Python全栈开发(92天全)视频教程 自学笔记07
  7. hdu1009 - 贪心
  8. hdu-5003 Osu!(水题)
  9. 【转】Yahoo!团队:网站性能优化的35条黄金守则
  10. 深度探索va_start、va_arg、va_end