go语言入门-变量

go语言入门-变量

变量声明的方式

普通声明方式-不赋值

var name string //""
var score float32 //0.0f
var isFail bool //false

批量声明方式-不复制

var (
	name string //""
	score float32 //0.0f
	isFail bool //false
)
不管是批量声明还是普通声明方式都会初始化普通变量。普通变量默认值如下:
func main() {

	var (
		b bool
		i int
		i8 int8
		i16 int16
		i32 int32
		i64 int64
		ui uint
	 	ui8 uint8
		ui16 uint16
		ui32 uint32
	    ui64 uint64
	    f32 float32
	    f64 float64
	    s string
		ru rune
		by byte
	)

	fmt.Printf("local variable -> bool default value ->%#v\n", b)
	fmt.Printf("local variable -> int default value ->%#v\n", i)
	fmt.Printf("local variable -> int8 default value ->%#v\n", i8)
	fmt.Printf("local variable -> int16 default value ->%#v\n", i16)
	fmt.Printf("local variable -> int32 default value ->%#v\n", i32)
	fmt.Printf("local variable -> int64 default value ->%#v\n", i64)
	fmt.Printf("local variable -> int64 default value ->%#v\n", i64)

	fmt.Printf("local variable -> uint default value ->%#v\n", ui)
	fmt.Printf("local variable -> uint8 default value ->%#v\n", ui8)
	fmt.Printf("local variable -> uint16 default value ->%#v\n", ui16)
	fmt.Printf("local variable -> uint32 default value ->%#v\n", ui32)
	fmt.Printf("local variable -> uint64 default value ->%#v\n", ui64)
	fmt.Printf("local variable -> uint64 default value ->%#v\n", ui64)

	fmt.Printf("local variable -> float32 default value ->%#v\n", f32)
	fmt.Printf("local variable -> float64 default value ->%#v\n", f64)

	fmt.Printf("local variable -> string default value ->%#v\n", s)
	fmt.Printf("local variable -> string default value ->%#v\n", ru)
	fmt.Printf("local variable -> string default value ->%#v\n", by)
	/**
	output:
	local variable -> bool default value ->false
	local variable -> int default value ->0
	local variable -> int8 default value ->0
	local variable -> int16 default value ->0
	local variable -> int32 default value ->0
	local variable -> int64 default value ->0
	local variable -> int64 default value ->0
	local variable -> uint default value ->0x0
	local variable -> uint8 default value ->0x0
	local variable -> uint16 default value ->0x0
	local variable -> uint32 default value ->0x0
	local variable -> uint64 default value ->0x0
	local variable -> uint64 default value ->0x0
	local variable -> float32 default value ->0
	local variable -> float64 default value ->0
	local variable -> string default value ->""
	local variable -> string default value ->0
	local variable -> string default value ->0x0
	 */
}

普通变量声明并赋值

var firstName string = "syouya\\" //"syouya\"--字符串赋值特殊字符会转义
var secondName string = `shiraki\` // "shiraki\" ``-包含的字符不会转义

类型推导声明变量

	var age = 12 //整型字面值常量默认转int
	fmt.Println(age)
	fmt.Printf("%T\n", age)
	var score = 1.0 //小数字面值常量默认装float64
	fmt.Printf("%T %#v\n", score, score)
	/**
	output:
	12
	int
	float64 1
	 */

短变量声明

	s3 := "哈哈哈"
	fmt.Printf("%T %#v\n", s3, s3)
	/**
	output:
	string "哈哈哈"
	 */

备注:

  • 短变量声明只能放在函数中使用
  • 短变量声明只能在当前作用域使用-如下
	//i在作用域1
	for i:= 0; i < len(s4); i++ {
		fmt.Printf("byte s[%d] = [%#v]\n", i, s4[i])
	}
	//i在作用域2
	s5 := []rune(s4)
	for i:= 0; i < len(s5); i++ {
		fmt.Printf("rune s[%d] = [%#v]\n", i, s5[i])
	}
	//i在作用域3
	{
		i := 10
		fmt.Printf("rune i = [%#v]\n", i)
		//i := 12 //No new variables on left side of := 编译报错
	}
	/***
	output:
	byte s[0] = [0x74]
	byte s[1] = [0x65]
	byte s[2] = [0x73]
	byte s[3] = [0x74]
	byte s[4] = [0xe6]
	byte s[5] = [0x88]
	byte s[6] = [0x91]
	byte s[7] = [0xe4]
	byte s[8] = [0xbb]
	byte s[9] = [0xac]
	rune s[0] = [116]
	rune s[1] = [101]
	rune s[2] = [115]
	rune s[3] = [116]
	rune s[4] = [25105]
	rune s[5] = [20204]
	 */

变量类型

普通变量

var firstName string = "syouya\\" //"syouya\"--字符串赋值特殊字符会转义
var secondName string = `shiraki\` // "shiraki\" ``-包含的字符不会转义

匿名变量

匿名变量用一个下划线标识

func main() {
	a, b := demo("w", "x")
	fmt.Println(a, b)
	//占位第一个返回值,忽略第一个返回值
	_, c := demo("w", "x")
	fmt.Println(c)
	//占位第二个返回值,葫芦第二个返回值
	d, _ := demo("w", "x")
	fmt.Println(d)
	/**
	output:
	x w
	w
	x
	 */
}

变量整理的思维导图如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u011461385/article/details/105804163