Go学习笔记 变量
Go学习笔记 变量
变量
变量的含义: 程序允许过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存找到这个变量,但是如果我们直接在代码中通过内存地址去操作变量的话,代码的可读性会非常差还容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。
变量的类型: 变量的功能是存储数据。不同变量保存的数据类型会不一样。常见变量的数据类型有: 整型、浮点型、布尔型等。Go语言中每一个变量都有自己的类型,并且变量必须经过声明才开始使用。
变量声明: Go 语言中的变量需要声明后才能使用,同一作用域内不支持重复声明。并且Go语言的变量声明后必须使用,否则会报。
单个变量的声明与赋值
全局变量是在函数外
局部变量是在函数内,局部变量必须引用
变量的声明格式: var <变量名称> <变量类型> 函数外的变量声明必须都是以var 开头进行声明
变量的赋值格式: var <变量名称> <表达式>
声明的同时赋值: var <变量名称> [变量类型] =<表达式>
#单个变量的声明与赋值
package main
import "fmt"
func variableZeroValue() {
var a int
var b string
//变量赋值
a = 10
fmt.Printf("%d %q", a, b)
}
func main() {
variableZeroValue()
fmt.Println("hello, world")
}
变量的定义
在Go中,如果一个名字以大写字母开头,那么它就是已导出的,例如:
pi和pizza 并未以大写字母开头,所以它们是未导出的
如果将Pi 修改为pi 就是未导出的
package main
import "fmt"
func main() {
//局部变量给数据起一个名字
var msg string = "hello world"
fmt.Println(msg)
//其他代码
fmt.Println(msg)
//其他代码
fmt.Println(msg)
//其他代码
fmt.Println(msg)
//其他代码
}
# 多重赋值
package main
import "fmt"
func main(){
a, b := 10,20
// 交换2个变量的值
var tmp int
tmp = a
a = b
b = tmp
fmt.Printf("a=%d,b=%d\n",a,b)
i ,j := 10,20
i ,j = j,i
fmt.Printf("i=%d,j=%d",i,j)
}
变量作用域
package main
import "fmt"
//包级别
var packageVar string = "package Var "
func main() {
// 函数级别的
var funcVar string = "func Var"
{
// 块级别的
var blockVar string = "block Var "
{
//限定变量的使用范围
//子块级别
var innerBlockVar string = "inner block var"
fmt.Println(packageVar, funcVar, innerBlockVar,blockVar)
}
fmt.Println(packageVar,funcVar,blockVar)
}
fmt.Println(packageVar,funcVar)
}
# 一个大括号就是一个作用域
变量的定义方式
package main
import (
"fmt"
)
func main(){
var name string = "xingxing" //定义类型并且初始化了值
var zeroString string // 定义变量类型,但不初始化值
var typeString = "xing" // 定义变量省略类型,不能省略初始化值
//通过对应的值类型推到变量的类型
// 短声明(必须在函数内包含函数内子块使用,不能再包级别使用)
shortString := "xingxing" //通过对应的值类型推到变量的类型
fmt.Println(name,zeroString,typeString,shortString)
}
package main
import (
"fmt"
)
func main(){
// 函数内(块)定义的变量必须使用
/* var name string = "xingxing"
var msg = "hello world "
var desc string
*/
var (
name string = "xingxing"
msg = "hello world "
desc string
)
x,y := "x","y"
fmt.Println(name,msg,desc,x,y)
}
更新变量的值
package main
import (
"fmt"
)
func main(){
var name string = "xingxing"
fmt.Println(name)
name = "xing" // 更新变量的值
fmt.Println(name)
}