/* *data:2015-06-02 *author:qdx *note:go语言学习笔记:变量 */ package main import "fmt" //go 语言的变量类型: /* bool string int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr byte(等价于 uint8) rune(等价于 int32,用于表示一个 unicode code point) float32 float64 complex64 complex128 */ //1.go语言中,变量的定义是以var开头,后接变量名和类型,不能重复定义 //a; //报错,变量未定义 //var a; //错误,没有加变量类型,也没有提供初值(初值可以看做隐身声明) var a int = 5; //2.在函数外的任何结构(construct)都通过一个关键字开始,例如变 //量使用 var 关键字开始,函数使用 func 关键字开始 //a = 6; //报错,函数体外没有定义的语句 //a := 6; //报错,:=的左边没有定义新变量,函数体外的非定义语句 //b := 6; //报错,函数体外的非定义语句,必须以关键字开始 //var b := 6; //报错,语法错误,定义变量初始化用“=”,而不是“:=” var b = 6; //g := 9; //报错,必须以关键字开始 //3.定义变量时,可以只用一个var,而把所有变量的定义放到小括号内 var ( c int = 8; d int = 9; e = 10; f string = "hello"; ) //var i, j, k = 10, 20; //定义时初始化,左右参数个数必须一致 var i, j, k = 10, 20, 30; //var l int, m string; //类型不一致时,不能在同一行内定义 //4.函数体内的变量定义可以不以var开始 func test(){ //b := 8; //函数体内的所有变量必须是被使用的,否则报错;函数体外的可以定义 var a, b int = 10, 20; //函数体内的变量能够在函数的作用域内覆盖函数体外的同名变量 //var a = 50; //错误,函数体内有a重复定义 g := 10; //函数体内可以不用var定义变量,此时已经隐身定义了 //g := "hello" //变量定义后,类型就已经确定了;如果需要将不同类型的值赋值给已经定义的变量,需要进行强制类型转换 //g = int(6.5); //报错,不能将字符常量进行类型转换 var h = 6.5; g = int(h); //对变量进行强制类型转换正确,变量的类型转换必须是显示的T(var) fmt.Println(a); fmt.Println(b); fmt.Println(f); fmt.Println(e+10); //fmt.Println(e+"a"); //报错 fmt.Println(g); } func testConst(){ //测试常量 //函数体内的常量可以不使用,函数内定义的常量只能在函数内使用, //超出定义常量的函数作用域,常量的作用域消失 const Pi = 3.14 const ( a = 5; c = "golang"; ) } func main(){ test(); testConst(); fmt.Println("c:",c); return; }
有疑问加站长微信联系(非本文作者)