什么是变量?

  一种抽象,计算机用来保存现实数据的容器,通过这个变量抽象可以写入现实数据到计算机中,并且可以读取变量取到保存到计算机中的现实数字化数据

Go-变量定义

  关键字  var

  关键符号  :=

import "fmt"

var country  = "China"

func main() {
var name = "beimenchuixue"
var (
age = 18
school = "huGong"
) work := "student"
fmt.Println(name, age, school, work)
}

  观察发现,有以下特性

    1. 定义变量类型的时候,大多数情况下不要写变量类型,Go解释器会自动推断,特殊情况还是要加上变量类型

    2. 每句语句后面都没有分号,但是解释器在编译的时候会自动加上

    3. 定义包变量的时候只能使用 var方式定义,不能使用 := 方式

    4. := 解释器会解释为两步,先var声明类型,然后再赋值

    5. 包变量可以不使用不报错,函数变量必须使用,但我们可以通过 _ 来忽略某个不想要的变量

    6. 定义多个变量的时候通过 var() 方式

    7. Go定义变量时候,变量名在前,变量类型在后,这和其他语言变量定义风格相反

Go-变量类型    8bit=1byte

  有符号整形    int8,16,32,64

  无符号整形    uint8,16,32,64

  浮点数      float32,64

  布尔型      bool

  复数       complex64,128

  字符串      string    双引号

  单个字节字符   byte      单引号

  单个字符     rune      单引号

  错误类型     error

Go-命名规范

  1. 遵循C语言命名规范,不能以数字开头,以大小写字母、下划线、数字组成

  2. 不能是关键字,不推荐使用内置函数名

  3. 首字母大写表示包外可以访问,首字母小写表示包外不可访问

  4. 以首字母大写区分不同单词

  5. 变量名、函数名、结构体名、接口名都遵守以上规范

Go变声明时候会给初始值

  1. 数字类型 int float byte rune 为 0

  2. string 为空字符串

  3. complex 为 (0+0i)

  4. bool类型问 false

  5. error类型为 <nil>

package main

import "fmt"

func main() {
var a int8
var b int64
var c float32
var d float64
var e bool
var f complex64
var g string
var h byte
var j rune
var k error
fmt.Println(a, b, c, d, e, f, g, h, j, k)
}

以上这些基础数据类型,只能满足存放一个数据的需求

Go变量作用域(生命范围)

  1. 定义在和 package import关键字同级,为包变量,作用于包全局,包内可以访问并可以直接修改

package main

import "fmt"

var country = "China"

func PrintCountry()  {
fmt.Println(country)
country = "Russia"
} func main() {
PrintCountry()
fmt.Println(country)
country = "American"
fmt.Println(country)
}

  2. 定义在函数内,为函数变量,作用于这个函数,函数内可以访问,函数外不可访问并且失效

package main

import "fmt"

func PrintCountry()  {
var country = "China"
fmt.Println(country)
} func main() {
PrintCountry()
}

  3. 定义在循环分支中,为循环分支变量,只能循环分支中可以访问,出循环分支外不可访问并且失效

package main

import "fmt"

func Count()  {
start := 0
for i := 0; i<=100 ; i ++ {
start = i
fmt.Println(start)
}
fmt.Println(start)
//fmt.Println(i)
} func main() {
Count()
}

  4. 形式上看,每对 {}形成一个作用域,都可以很轻松修改掉能访问到的外部作用域变量并做出修改,但是外部作用域不能访问内部作用域变量

最新文章

  1. 容器化redis高可用方案
  2. springmvc+spring+hibernate
  3. Sublime Text 2—解决中文乱码
  4. 跟着 8 张思维导图学习 Javascript
  5. [转载]我读过最好的Epoll模型讲解
  6. CFUUIDRef和CFStringRef-生成唯一标识符
  7. GSM Channel Mode Modify和Channel Mode Modify Acknowledge信令
  8. (转)WCF中调用WebService出错,大家帮忙看看,回答就有分
  9. Label 表达式绑定
  10. 内功心法 -- java.util.ArrayList&lt;E&gt; (6)
  11. Sass与Compass——回顾
  12. 数据库CAST()函数和CONVERT()函数比较
  13. 【转】globk通常的应用
  14. Java集合类的那点通俗的认知
  15. solr之环境配置一
  16. 子集三种生成方法 java
  17. Job集群设计
  18. SQLite 安装
  19. vim打造开发IDE
  20. laravel 使用验证码

热门文章

  1. java23种设计模式——三、工厂模式
  2. 什么是谷歌PageRank (简称PR值)
  3. “计数质数”问题的常规思路和Sieve of Eratosthenes算法分析
  4. MySQL锁这块石头似乎没有我想的那么重
  5. Tomcat之如何自己做一个tomcat
  6. 【问题】【SpringBoot】记一次springboot框架下用jackson解析RequestBody失败的问题
  7. C# aspx 禁止文本款输入缓的几种方法
  8. Activiti7 使用监听器分配任务人员
  9. Avtiviti工作流规范 BPM与BPMN
  10. Java实现打开google浏览器