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)
}