• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

2. Go语言基本语法 - 变量及常量

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、变量

(一)变量的概念

  1. 变量时计算机语言中存储数据的抽象概念。变量的功能是存储数据。变量通过变量名访问;
  2. 变量的本质是计算机分配的一小块内存,专门用于存放指定 数据,在程序运行过程中该数据可以发生改变;
  3. 变量的存储往往具有瞬时性,当程序运行结束,存放该数据的内存就会释放,而该变量就会消失;
  4. Go语言的变量名由字母、数字、下划线组成,首个字符不能输数字;

(二)声明变量

Go主要有静态语言、函数多返回值、天生并发、内置GC(自动垃圾回收)、安全性高、语法简单、编译快速。
- 静态语言:编译时变量的数据类型即可确定的语言,要求在使用变量之前必须声明数据类型
  1. 未初始化的标准格式
var 变量名 变量类型
  1. 未初始化批量格式
var(
	a int
    b string
    c []float32
    d func() bool
    e struct{
        x int
        y string
    }
)
未初始化变量的默认值

- 整型和浮点型变量默认值 0
- 字符串默认值 ""
- 布尔值默认值 false
- 函数、指针变量默认值 null
package main

import "fmt"

func main() {
	var (
		a int
		b string
		c float32
		d bool
		e func() string
		f [3]int
	)

	fmt.Printf("%T %v \n", a, a)
	fmt.Printf("%T %v \n", b, b)
	fmt.Printf("%T %v \n", c, c)
	fmt.Printf("%T %v \n", d, d)
	fmt.Printf("%T %v \n", e, e)
	fmt.Printf("%T %v \n", f, f)
}


结果:
int 0 
string  
float32 0 
bool false 
func() string <nil> 
[3]int [0 0 0] 

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

import "fmt"

// 声明全局变量
var n = 10

func main() {
	// 短变量初始化
	m := 20
	fmt.Printf("%T %v \n", m, m)
	fmt.Printf("%T %v \n", n, n)
    
    // 为变量赋多个值
    a, b, c := "Hello", "World", 100
    fmt.Printf("%T %v \n", a, a)
	fmt.Printf("%T %v \n", b, b)
    fmt.Printf("%T %v \n", c, c)

}

结果:
int 20 
int 10

(三)变量多重赋值(多个变量同时赋值)

​ Go语法中,变量初始化和变量赋值是两个不同的概念。Go语言的变量赋值与其他语言一样,可以实现变量交换。

(四)匿名变量

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

import "fmt"


func main() {
	// 匿名变量
	m,_ := 20,"enen"
	fmt.Printf("%T %v \n", m, m)
	
    // 变量互换
    x := 100
    y := 200
    fmt.Println(x, "--", y)
    x, y = y, x
    fmt.Println(x, "--", y)
}

结果:
100 -- 200
200 -- 100


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go语法和特点零碎总结 - Silentdoer发布时间:2022-07-10
下一篇:
go语言基本语法,数据类型,等基础知识发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap