• 声明,初始化,匿名变量,作用域


    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)
    }
    

      

  • 相关阅读:
    iOS7's subview trimmed if out of parent view bounds
    iOS 7 — navigationController is setting the contentInset and ContentOffset of my UIScrollView
    友盟统计-页面访问路径
    iOS-Get the NSString height in iOS 7
    php
    How to Install Laravel PHP Framework on CentOS 7 / Ubuntu 15.04
    apache-.htaccess
    ios-member center
    lamp
    mysql
  • 原文地址:https://www.cnblogs.com/ACGame/p/11823905.html
Copyright © 2020-2023  润新知