Go语言学习(3) - 变量与初始化

幸运草 2020年4月16日20:50:01前端框架评论阅读模式

变量的概念

变量是计算机语言中存储数据的抽象概念,变量通过变量名访问

变量的本质是计算机分配的一小块内存,专门用于存放指定数据,在程序运行过程中该数值可以改变

变量的存储往往具有瞬时性、或者说是临时存储,当程序运行结束,存放该数据的内存就会释放,该变量就会消息

Go语言的变量名由数字、字母、下划线组成,首个字符不能是数字

声明变量

声明变量有多种形式:

1.未初始化话的标准格式

  1. var  变量名  变量类型

2.未初始化的批量格式

不用每行都用 var 声明

  1. var(
  2.    a int
  3.    b string
  4.    c []float32
  5.    d func() bool
  6.    e struct{
  7.        x int
  8.        y string
  9.      }
  10. )

未初始化变量的默认值

  • 整型和浮点型变量默认值为 0
  • 字符串默认值为空字符串
  • 布尔型默认值为false
  • 函数、指针变量默认值为 nil

例子:

  1. package main
  2. import "fmt"
  3. func main() {
  4.    var(
  5.        a int
  6.        b string
  7.        c []float32
  8.        d bool
  9.        e []int
  10.        f [3]int
  11.        h int32 = 100
  12.        g func() string
  13.    )
  14.    fmt.Printf("%T , % v n", a , a)
  15.    fmt.Printf("%T , % v n", b , b)
  16.    fmt.Printf("%T , % v n", c , c)
  17.    fmt.Printf("%T , % v n", d , d)
  18.    fmt.Printf("%T , % v n", e , e)
  19.    fmt.Printf("%T , % v n", f , f)
  20.    fmt.Printf("%T , % v n", h , h)
  21.    fmt.Printf("%T , % v n", g , g)
  22. }

输出如下:

  1. int ,  0
  2. string ,
  3. []float32 , []
  4. bool , false
  5. []int , []
  6. [3]int , [ 0  0  0]
  7. int32 ,  100
  8. func() string , <nil>

3.初始化变量的标准格式

  • var 变量名 类型 = 表格式

4.初始化变量的编译器自动推断类型格式

  • var 变量名 = 表达式

5.初始化变量的简短声明格式(短变量声明格式)

  • 变量名 := 表达式
  • 使用 := 赋值操作符, := 可以高效的创建一个新的变量,称之为初始化声明
  • 声明语句省略了 var 关键字
  • 声明类型将由编译器自动推断
  • 这是声明变量的首选方式,但是它只能被用在函数体内,而不可以用于全局变量的声明与赋值
  • 该变量名必须是没有定义过的变量,若定义过,将发生编译错误
  • 在多个短变量声明和赋值中,至少有一个新声明的变量出现在左侧中,那么即便有其他变量名可能是重复声明的,编译器也不会报错

变量多重赋值

  • Go语法中,变量初始化和变量赋值是两个不同的概念,Go语言的变量赋值与其他语言一样,但是Go提供了其他程序员期待已久的多重赋值功能,可以实现变量替换,多重赋值让Go语言比其他语言减少了代码量

如想要对 q 和 w 变量的值进行互换:

  1.    q := 10
  2.    w := 20
  3.    fmt.Println(q , "   " , w)
  4.    q, w = w, q
  5.    fmt.Println(q , "   " , w)

得到的结果为:

  1. 10      20
  2. 20      10

有了变量的多重赋值,就不用像Java中引入第三个变量,来进行两个变量值的互换。

匿名变量

  • Go语言的函数可以返回多个值,而事实上我们并不是对所有的返回值都用得上,那么就可以使用匿名变量,用“_”下划线替换即可。
  • 匿名变量不占用命名空间,不会分配内存

特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 加入Q群
  • QQ扫一扫
  • weinxin
幸运草
Go语言接口规则 前端框架

Go语言接口规则

Go语言接口规则 接口是一个或多个方法签名的集合。任何类型的方法集中只要拥有该接口对应的全部方法签名。就表示它 "实现" 了该接口,无须在该类型上显式声明实现了哪个接口。对应方法,是指有相同名称、参数...
Go语言中处理 HTTP 服务器 前端框架

Go语言中处理 HTTP 服务器

1 概述 包 net/http 提供了HTTP服务器端和客户端的实现。本文说明关于服务器端的部分。 快速开始: package main import (   "log"   "net/http" )...

发表评论