码迷,mamicode.com
首页 > 其他好文 > 详细

Golang 入门 : 变量

时间:2021-05-24 17:07:52      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:空白   内部使用   而且   更改   重复   func   计算   编译   class   

变量

Go语言是静态强类型语言,所以变量是有明确类型的。变量实质上就是在内存中的一小块空间,用来存储特定类型的可变数据。如果没有变量我们的程序只能将数值写死都是静态的数据,无法更改,变量可以让我们进行动态的操作。在数学概念中变量表示没有固定的值,可以随时改变的数。例如:除数、减数与被减数。

类型 变量内可以存储哪种类型的数据。

变量内存储的具体的值。

地址 在计算机中可以找到变量的位置,计算机为变量开辟的一块内存地址。

如何声明变量

在其他语言中比如C#、Java声明变量都需要关键字 var。go语言也可以这样声明。

var age int

var 声明、age 变量名、int 变量类型。这里只是声明了一个变量,并没有给当前变量赋值。默认就是当前声明的类型的零值。我们在使用变量时需要给他进行赋值。

默认零值

int       0
string   ""
bool     false
float     0.0

如何赋值

var age int        // 声明 未赋值默认为0
age = 18          // 赋值

var name int = 20 // 声明并赋值

Go语言支持根据数据推导数据类型的方法。所以在定义的时候可以不用写数据类型,直接根据你所初始化的值,来推导出定义的数据类型。

var name = "小明"
var age = 18

简短定义

Go还有更简单定义变量的方式

// 简短定义方式,声明并赋值
name := "小明"
age := 18

多变量定义

// var方式声明多变量
var a, b, c int
a = 1
b = 2
c = 3

// 也可以写在一行
var a1, a2, a3 int = 10, 20, 30

// 也可以省略类型 根据数据进行类型推导
var a1, a2, a3 = 10, 20, "小明"

// 如果是多种类型 也可以使用集合
var (
    a1 = ""
    a2 = 10
)

简短定义方式定义多个变量。需要注意,一个变量在程序中只能够定义一次,重复定义就会报错。

// 简短定义多变量
name, age := "小明", 18
println(name, age)

// 重复定义就会报错
name, age := "小红", 18

// 如果定义的左边有一个新的变量,就不会有问题了
name, age, sex :=  "小红", 18, "女"
// 左边有一个新的变量声明,对于前两个就是修改操作,后一个是声明并赋值操作。

变量使用

起初计算机最昂贵的莫过于内存啦,在使用多变量进行变量交换的时候,使用传统的方法进行变量的交换,需要多申请一块内存来交换。

// a变量的值 要和b变量交换 需要一个第三方变量来转换
var a int = 100 
var b int = 20
var c int

c = a
a = b
b = c
fmt.Println(a, b)

而在Go语言中,可以轻松实现变量自由交换。

var a int = 100
var b int = 20

b, a = a, b

fmt.Println(a, b)

匿名变量

匿名变量也就是没有名字的变量,开发过程中可能会遇到有些变量不是必须的。匿名变量使用下划线 _ 表示。_ 也称为空白标识符,任何类型都可以使用它进行赋值,而且任何类型赋值后都将直接被抛弃,所以匿名变量不会占用内存,表示后续代码不需要再使用此变量。

package main

import (
    "fmt"
)

func main() {
    a, _ := 100, 200
    //这里第二个值200赋给了匿名变量_ 也就忽略了不需要再次打印出来
    fmt.Println(a)
}

变量的作用域

变量在程序中有一定的作用范围,如果一个变量声明在函数体的外部,这样的变量被认为是全局变量,全局变量在整个包内,也就是当前的 package 内都可以被调用得到。如果变量定义在函数体内部,则被称之为局部变量。例如下面代码:

package main

import (
    "fmt"
    "os"
)

//全局变量
var name = "小明"

//主函数 程序的入口
func main() {
    fmt.Println(name) //可以访问到全局变量name

    myfunc()
}

//自定义函数 
func myfunc() {
    fmt.Println(name) //这里也可以访问到全局变量name

    age := 30
    fmt.Println(age) //age为myfunc的局部变量 只能够在函数内部使用

    if t, err := os.Open("file.txt"); err != nil {
        fmt.Print(t) //t作为局部变量 只能在if内部使用
    }
    fmt.Println(t) //在if外部使用变量则会报错 undefined: t  未声明的变量t
}

总结一下

  • 变量在使用前必须先声明。
  • 变量名不能重复定义。
  • 如果是简短定义方式,左边至少有一个是新的变量。
  • 如果定义了变量,必须使用,否则编译无法通过。
  • 全局变量可以不使用也能编译通过,定义的全局变量和局部变量名称如果相同,则会优先使用局部变量。
  • 简短定义方式不能定义全局变量,也就是不能声明在函数外部。

Golang 入门 : 变量

标签:空白   内部使用   而且   更改   重复   func   计算   编译   class   

原文地址:https://www.cnblogs.com/niuben/p/14788423.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!