什么是变量?

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

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

Go-变量-var的更多相关文章

  1. 了解CSS/CSS3原生变量var

    一.变量是个好东西 在任何语言中,变量的有一点作用都是一样的,那就是可以降低维护成本,附带还有更高性能,文件更高压缩率的好处. 随着CSS预编译工具Sass/Less/Stylus的关注和逐渐流行,C ...

  2. C#中隐式类型本地变量var

    在新接触的项目中,看到很多声明变量时用var.只记得在javascript中声明变量用var.今天在家里看C#和.Net高级编程,看到隐式变量这一块,就总结一下C# 中隐式变量var的用法. 1.C# ...

  3. CSS/CSS3中的原生变量var详解以及布局响应式网页扩展

    使用语法 首先我们先来看一个例子:html代码: <div class="element">这是一段文字</div> css代码: .element { w ...

  4. 了解CSS/CSS3原生变量var (转)

    一.变量是个好东西 在任何语言中,变量的有一点作用都是一样的,那就是可以降低维护成本,附带还有更高性能,文件更高压缩率的好处. 随着CSS预编译工具Sass/Less/Stylus的关注和逐渐流行,C ...

  5. css原生变量var()

    了解css/css3原生变量var 阮一峰css变量教程 深入学习css自定义属性(css变量)

  6. css原生变量 var

    css 变量的支持情况: 在pc端支持还不错,ie不支持,移动端也不支持,大概这就是css变量没有广泛使用的原因吧 CSS预编译工具Sass/Less/Stylus的便捷之处就是可以定义变量,方便代码 ...

  7. Swift学习——变量var和let常量的用法(一)

    Swift中的变量var和let常量 首先介绍一下Swift中的 var 和 let (1)var 是 variable的缩写形式,是变量的意思 ,是可改变的.并非数据类型 比如: 注意每一个语句后面 ...

  8. 2、变量var关键字

    我们在看js声明变量的时候,经常会发现有的变量前会带var 但又的则没有,那么这究竟有什么区别呢? 如果这种情况发生在函数里的话, 加var定义的变量是局部变量,不加var定义的就成了全局变量. // ...

  9. css预编译语言 sass scss(变量$var, css嵌套规则,@import规则,@extend,@mixin)

    什么是sass Sass 是对 CSS 的扩展,让 CSS 语言更强大.优雅. 它允许你使用变量.嵌套规则. mixins.导入等众多功能, 并且完全兼容 CSS 语法. Sass 有助于保持大型样式 ...

  10. 变量 var &函数new

    声明变量 变量:变量是存储信息的容器,创建变量通常称为"声明"变量 变量必须以字母开头(小驼峰式myName): 变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做): 变量名 ...

随机推荐

  1. 放眼SEM现状及发展历程

    http://www.wocaoseo.com/thread-187-1-1.html 由于近年来移动应用的基本普及,搜索引擎营销随之进入高速发展时代,应用层次的提升已经成为企业营销策略的一个重要组成 ...

  2. py_正则表达式练习

    正则表达式: #正则表达式 #键盘数字6上的符号,^表示行的开始,$ 表示行的结束 #test = "tm queal Tomorrow Moon" ''' ^tm #匹配tm开头 ...

  3. JS 替换日期的横杠为斜杠

    例如1: <script type="text/javascript">      var dt = "2010-01-05";           ...

  4. 源码浅入浅出 Java ConcurrentHashMap

    从源码的角度深入地分析了 ConcurrentHashMap 这个线程安全的 HashMap,希望能够给你一些帮助. 老读者就请肆无忌惮地点赞吧,微信搜索[沉默王二]关注这个在九朝古都洛阳苟且偷生的程 ...

  5. 常用的android弹出对话框 几乎包含了所有(1)

    我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等 ...

  6. 兼容H5页面的js

    (function (doc, win) { let docEl = doc.documentElement; let resizeEvt = 'orientationchange' in windo ...

  7. MyBatis动态SQL(使用)整理

    MyBatis 令人喜欢的一大特性就是动态 SQL.在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的.MyBatis 动态 SQL 的出现, 解决了这个麻烦. MyBa ...

  8. UBer面向领域的微服务体系架构实践

    介绍 最近,人们对面向服务的系统架构和微服务系统架构的缺点进行了大量的讨论.尽管仅仅在几年前,由于微服务体系架构提供了许多好处,如独立部署的灵活性.明确的所有权.提高系统稳定性以及更好地分离关注点等, ...

  9. Python全栈工程师系列学习之学习记录

    @ 目录 前言 Day 01 一.python的历史和种类 二.安装python解释器以及配置环境变量 三.变量.常量和注释 Day 02 Day 03 Day 04 Day 05 Day 06 一. ...

  10. Uber的API生命周期管理平台边缘网关(Edge Gateway)的设计实践

    设计边缘网关(Edge Gateway),一个高可用和高可扩展的自助服务网关,用于配置.管理和监控 Uber 每个业务领域的 API. Uber 的 API 网关的演进 2014 年 10 月,优步开 ...