Go 学习笔记-变量

package main

import "fmt"

/*
 变量声明方式1: var <var_name> [<type>] [= <value>]
可以省略<type>,根据值内容自行判定类型
可以省略<value>(初始化),go 会给变量使用默认值初始化
*/

/*
 变量声明方式2: <var_name> := <value>
 根据值自行判定变量类型声明一个"新"变量,变量名称必须是一个没有声明过的名称
 只能在函数使用的便捷声明方式,不能声明全局变量
*/

// 变量声明默认值: 如果声明变量未赋值,go 会默认给变量设置 int=0 (bool=false, ptr=nil) 值
// 变量声明规范:驼峰命名法(不建议使用 _ 作为分隔符)

/*
全局变量:声明一个变量
只能使用声明方式1 指定变量类型,不支持使用声明方式2
*/
var gInt int

// gInt := 100	// error

// 全局变量:声明多个变量
var (
	gBool bool
	gStr  string
)

func setGlobalVar() {
	fmt.Println("global var default value:", gInt)

	gInt = 1000
	fmt.Println("global var value:", gInt)

	gBool = false
	gStr = "global string"
	fmt.Println(gBool, gStr)
}

func defaultValue() {
	var i int     // 整型 0
	var b bool    // 布尔型 false
	var f float32 // 浮点型 0
	var s string  // 字符串 空字符串
	var pa *int   // 指针 <nil>
	var aa []int  // 数组 []

	fmt.Println(i, b, f, s, pa, aa)
}

// 声明方式1
func variableInit() {
	// 声明方式1: 指定类型
	var i int = 10
	var b bool = true
	var s string = "I'm string"
	fmt.Println(i, b, s)

	// 声明方式1: 根据值自行判定变量类型(不需要显示的声明变量类型)
	var ia = 11
	var ba = false
	var sa = "two string"
	fmt.Println(ia, ba, sa)
}

// 声明方式2
func variableInit2() {
	// 声明方式2: 根据值自行判定变量类型
	i := 100
	b := true
	s := "new string"
	fmt.Println(i, b, s)

	// i := 2	// 声明方式2,相同变量名不允许出现两次
	// i := "abc"
}

// 多变量赋值
func variableInitMulti() {
	// 指定类型多变量赋值必须是同一类型
	var a, b, c int = 1, 2, 3
	fmt.Println(a, b, c)

	// 自行判断类型可初始化不同类型的变量
	var a1, b1, s = 100, false, "str"
	fmt.Println(a1, b1, s)
}

func variableInitMulti2() {
	a, f, s := 101, 0.1, "str"
	fmt.Println(a, f, s)
}

// 变量赋值 =
func variableSetValue() {
	var i int
	i = 10

	s := "string"
	s = "set string"
	fmt.Println(i, s)

	// 交换变量
	a, b := 2, 3
	a, b = b, a
	fmt.Println("a <-> b", a, b)
}

// 变量赋值
func variableSetValueIgnore() {
	// 使用 _ 作为空白占位符,抛弃某一个位置的变量值,常用于只获取所关注的变量
	// _ 作为空白占位符,无法使用或赋值
	var a, _, c = 1, false, 3
	fmt.Println(a, c)

	// 抛弃多个变量
	var f, _, _ = 0.1, "str", 1
	fmt.Println(f)
}

func main() {
	fmt.Println("variable")

	setGlobalVar()
	defaultValue()
	variableInit()
	variableInit2()
	variableInitMulti()
	variableInitMulti2()
	variableSetValue()
	variableSetValueIgnore()
}

参考链接

Go 语言变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值