• Go-变量-var


    什么是变量?

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

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

  • 相关阅读:
    各种素材类精品网站
    Java如何设置代理ip
    Spring事务的实现方式和原理以及隔离级别?
    Spring 是什么?
    线程池中阻塞队列的作用?为什么是先添加队列而不是先创建最大线程?
    为什么用线程池?解释下线程池参数
    并发三大特性
    ThreadLocal的原理和使用场景。
    谈谈对线程安全的理解
    sleep,wait,join,yield
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/9036153.html
Copyright © 2020-2023  润新知