go语言学习系列教程(3)---变量

1:变量是什么

变量是程序运行过程中存储数据的抽象概念,它的值是允许改变的,在 Go 中,有多种语法用于声明变量

2:声明单个变量

语法:var name type

package main

import "fmt"

func main() {
	var age int
	fmt.Println("my age is",age)
}

语句 var age int 声明了一个 int 类型的变量,名字为 age。我们还没有给该变量赋值。如果变量未被赋值,Go 会自动地将其初始化,赋值该变量类型的零值(Zero Value)
运行后会看到如下输出:
my age is 0
age变量可被赋值位任何整型值

package main

import "fmt"

func main() {
    var age int // 变量声明
    fmt.Println("my age is", age)
    age = 11 // 赋值
    fmt.Println("my age is", age)
    age = 22 // 赋值
    fmt.Println("my new age is", age)
}
输出:
my age is  0  
my age is 11 
my new age is 22

声明变量并初始化

package main

import "fmt"

func main() {
    var age int = 22 // 声明变量并初始化

    fmt.Println("my age is", age)
}
输出:
my age is 22

3:类型推断

如果变量有初始值,那么 Go 能够自动推断具有初始值的变量的类型。因此,如果变量有初始值,就可以在变量声明中省略 type。如果变量声明的语法是 var name = initialvalue,Go 能够根据初始值自动推断变量的类型。在下面的例子中,我们省略了变量 age 的 int 类型,Go 依然推断出了它是 int 类型

package main

import "fmt"

func main() {
    var age = 22 // 可以推断类型

    fmt.Println("my age is", age)
}

4:声明多个变量

Go 能够通过一条语句声明多个变量。
声明多个变量的语法是 var name1, name2 type = initialvalue1, initialvalue2

package main

import "fmt"

func main() {
    var w, h int = 11, 22 // 声明多个变量

    fmt.Println("w is", w, "h is", h)
}

在有些情况下,我们可能会想要在一个语句中声明不同类型的变量。其语法如下:
var (
name1 = initialvalue1,
name2 = initialvalue2
)
下面的程序声明不同类型的变量

package main

import "fmt"

func main() {
    var (
        name   = "test"
        age    = 18
        height int
    )
    fmt.Println("my name is", name, ", age is", age, "and height is", height)
}

这里我们声明了 string 类型的 name、int 类型的 age 和 height

输出
 my name is test , age is 18 and height is 0

5:简短声明

Go 也支持一种声明变量的简洁形式,称为简短声明(Short Hand Declaration),该声明使用了 := 操作符。
声明变量的简短语法是 name := initialvalue

package main

import "fmt"

func main() {  
    name, age := "test", 18 // 简短声明

    fmt.Println("my name is", name, "age is", age)
}
 输出
my name is test , age is 18

简短声明的语法要求 := 操作符的左边至少有一个变量是尚未声明的。

package main

import "fmt"

func main() {
   a, b := 20, 30 // 声明变量a和b
   fmt.Println("a is", a, "b is", b)
   b, c := 40, 50 // b已经声明,但c尚未声明
   fmt.Println("b is", b, "c is", c)
   b, c = 80, 90 // 给已经声明的变量b和c赋新值
   fmt.Println("changed b is", b, "c is", c)
}
输出
a is 20 b is 30   
b is 40 c is 50   
changed b is 80 c is 90

下面的程序将报错

package main

import "fmt"

func main() {  
    a, b := 20, 30 // 声明a和b
    fmt.Println("a is", a, "b is", b)
    a, b := 40, 50 // 错误,没有尚未声明的变量
}

6:强类型

Go 是强类型(Strongly Typed)语言,因此不允许某一类型的变量赋值为其他类型的值,下面的程序会抛出错误 cannot use “naveen” (type string) as type int in assignment,这是因为 age 本来声明为 int 类型,而我们却尝试给它赋字符串类型的值

package main

func main() {  
   age := 11      // age是int类型
   age = "naveen" // 错误,尝试赋值一个字符串给int类型变量
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaowen2008821

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值