golang变量的各种声明方式

一、类型推导

类型推导是将变量的类型省略,根据等号右边的值来自动推导变量的类型并完成初始化。 有时候我们会,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。

var name = "pprof.cn"
var sex = 1

1、变量

程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,但是如果我们直接在代码中通过内存地址去操作变量的话,代码的可读性会非常差而且还容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。

1.1 、变量类型

变量(Variable)的功能是存储数据。常见变量的数据类型有:整型、浮点型、布尔型等。
Go语言中的每一个变量都有自己的类型,并且变量必须经过声明后才能使用。

1.2 、标准声明

Go语言的变量声明格式为:

var  变量名  变量类型

变量的声明以关键字var开头,变量类型放在变量的后面,行尾不需要分号:

var  name 	 string
var  age   	 int 
var  isBool  bool

1.3、批量声明

每声明一个变量就需要写var关键字会比较繁琐,go语言中支持批量变量的声明:

var (
        a string
        b int
        c bool
        d float32
    )

1.4、变量的初始化

Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0, 字符串变量的默认值为空字符串,布尔型变量默认为false, 切片、函数、指针变量的默认为nil。

当然我们也可在声明变量的时候为其指定初始值。变量初始化的标准格式如下:

 var 变量名 类型 = 表达式

栗子 :

var varName  string = "welcome to golang. "

1.5 、类型推导

有时候我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。

 var name = "James"
 var sex = 35

我们也可以一次性初始化多个变量:

 var  name,  sex = "James", 35

1.6 、短变量声明

在函数内部,可以使用更简略的 “ := ” 方式声明并初始化变量。

package main

import (
    "fmt"
)

// 全局变量m
var m = 100

func main() {
	// 使用 := 声明变量n和m
    n := 10
    // 此处声明局部变量m
    m := 200 
    fmt.Println(m, n)
}

注:下面的短变量声明方式是不正确

var(
    size := 1024
    max_size = size*2
)

func main() {
    fmt.Println(size,max_size)
}

上面栗子是不能通过编译,因为短变量声明是有着限制:

1.必须使用显示初始化;
2.不能提供数据类型,编译器会自动推导;
3.只能在函数内部使用简短模式;

1.7 、匿名变量

在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线 _ 表示,例如:

func foo() (int, string) {
    return 10, "Q1mi"
}
func main() {
    x, _ := foo()
    _, y := foo()
    fmt.Println("x=", x)
    fmt.Println("y=", y)
}

匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。 (在Lua编程语言里,匿名变量也被叫做哑元变量。)

注意事项:

函数外的每个语句都必须以关键字开始(var、const、func等);

:= 不能使用在函数外;

_ 多用于占位,表示忽略值;

你可能感兴趣的:(golang)