zoukankan      html  css  js  c++  java
  • 声明,初始化,匿名变量,作用域

    1、变量声明

    1)标准格式:

    var 变量名 变量类型

    当一个变量被声明之后,系统自动赋予它该类型的零值:int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil 等。所有的内存在 Go 中都是经过初始化的。

    2)批量格式

    var (
    变量名1 变量类型1
    变量名2 变量类型2
    变量名3 变量类型3
    )

    3)简短格式

    变量名 := 表达式

    简短格式的限制:定义变量,同时显式初始化。不能提供数据类型。只能用在函数内部。

    注意:

    在单个短变量声明和赋值中,由于使用了:=,而不是赋值的=,因此推导声明写法的左值变量必须是没有定义过的变量。若定义过,将会发生编译错误。
    在多个短变量声明和赋值中,至少有一个新声明的变量出现在左值中,即便其他变量名可能是重复声明的,编译器也不会报错。

    声明示例:

    package main
    
    import "fmt"
    
    func function1(){
    	var a, b int
    	fmt.Printf("标准格式:a = %v, b = %v
    ", a, b)
    }
    
    func function2()  {
    	var (
    		a int
    		b float64
    		c []int
    	)
    	fmt.Printf("批量格式: a = %v, b = %v, c = %v
    ", a, b, c)
    }
    
    func function3()  {
    	a, b := 1, "hello"
    	fmt.Printf("简短格式: a = %v, b = %v
    ", a, b)
    }
    
    func main() {
    	function1()
    	function2()
    	function3()
    }
    

      

    2、变量初始化

    1)标准格式

    var 变量名 类型 = 表达式

    2)编译器推导类型的格式

    var 变量名 = 表达式

    在标准格式的基础上,将类型省略后,编译器会尝试根据等号右边的表达式推导变量的类型。

    初始化示例:

    package main
    
    import "fmt"
    
    func main() {
    	var x int = 100 // 标准格式
    	var y = 998 // 编译器推导类型的格式
    	fmt.Printf("x = %v, y = %v
    ", x, y)
    }
    

      

    3、多重赋值

    多重赋值时,变量的左值和右值按从左到右的顺序赋值。

    示例:

    package main
    
    import "fmt"
    
    func main() {
    	x, y := 100, 200
    	x, y = y, x
    	fmt.Printf("x = %v, y = %v
    ", x, y) // x = 200, y = 100
    }
    

      

    4、匿名变量

    匿名变量:没有名称的变量、类型或方法。

    匿名变量是一个下画线“_”,“_”本身就是一个特殊的标识符,被称为空白标识符。它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算。使用匿名变量时,只需要在变量声明的地方使用下画线替换即可。

    示例:

    package main
    
    import "fmt"
    
    func function()(int, int)  {
    	return 100, 200
    }
    
    func main() {
    	x, _ := function()
    	_, y := function()
    	fmt.Printf("x = %v, y = %v
    ", x, y) // x = 100, y = 200
    }
    

      

    5、变量作用域

    Go语言中的变量分为三种类型,分别是局部变量、全局变量和形式参数。

    1)局部变量

    在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。

    示例:

    package main
    
    import "fmt"
    
    func main() { // a, b, c都是局部变量
    	var a = 100
    	var b = 200
    	var c = a + b
    	fmt.Printf("a = %v, b = %v, c = %v
    ", a, b, c)
    }
    

      

    2)全局变量

    在函数体外声明的变量称之为全局变量,全局变量可以在整个包甚至外部包(被导出后)使用。

    Go语言程序中全局变量与局部变量名称可以相同,但是函数体内的局部变量会被优先考虑。

    示例:

    package main
    
    import "fmt"
    
    var x = 100
    var y = 9.9
    func main() {
    	var y = 998
    	fmt.Printf("x = %v, y = %v
    ", x, y) // x = 100, y = 998
    }
    

      

    3)形式参数

    形式参数会作为函数的局部变量来使用。

    示例:

    package main
    
    import "fmt"
    
    func sum(a, b int) int {
    	fmt.Printf("a = %v, b = %v
    ", a, b)
    	return a + b
    }
    func main() {
    	sum(3, 4)
    }
    

      

  • 相关阅读:
    用 Python 带你看各国 GDP 变迁
    Fluent Interface(流式接口)
    probing privatePath如何作用于ASP.NET MVC View
    Word插入htm文件导致文本域动态增加的一个问题
    Visual Studio 2013附加进程调试IE加载的ActiveX Control无效解决方法
    Ubuntu下Chrome运行Silverlight程序
    Windows Phone Bing lock screen doesn't change解决方法
    SPClaimsUtility.AuthenticateFormsUser的证书验证问题
    Web Service Client使用Microsoft WSE 2.0
    Visual Studio 2013安装Update 3启动crash的解决方法
  • 原文地址:https://www.cnblogs.com/ACGame/p/11823905.html
Copyright © 2011-2022 走看看