一.第一个程序
//每个go源码的开头都是package,表示所属的包 //main表示可编译成二进制文件 package main //导入格式化包,不用时会报错 //不能使用单引号 import "fmt" //main主函数入口,不能带参数,不能定义返回值 //func声明函数放入关键字 //其那边大阔号不能单起一行 func main(){ fmt.Println("wocao go!") }
// go单行注释,与java和C++一样
/* 多行注释 */
二.基础语法
1.命名
- go语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个简单的命名规则
- 一个名字必须以一个字母或下划线开头,后面可以跟任意数量的字母、数字或下划线
- go区分大小写,hello Hello不同
- go语言中有25个关键字,不能用于自定义名字
关键字:
break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var
还有30多个预定义的名字,用于内建的常量、类型和函数
内建常量:
true false iota nil
内建类型:
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error
内建函数:
make len cap new append copy close delete
complex real imag
panic recover
2.变量
变量的声明:
package main import "fmt" func main(){ var a int var b int //一次性声明多个变量 var( c int d int ) //变量都会有一个初始0值 fmt.Print(a,b,c,d) } //运行结果 //0 0 0 0 //变量都会初始值为0
变量的初始化:
package main import ( "fmt" "reflect" ) func main() { //声明并初始化 var a int=10 var b int=10 // := 是声明并初始化 c :=30 //利用反射查看c的类型 fmt.Print("c的类型是:",reflect.TypeOf(c)) fmt.Print(a,b,c) }
//结果
//c的类型是:int 10 10 30
变量赋值:
package main import "fmt" func main() { //直接赋值 var a int a = 10 b := 20 //多重赋值 var c, d, e int c, d, e = 10, 20, 30 fmt.Print(a, b,c,d,e) }
//注意:声明的变量不调用会报错
匿名变量
_代表特殊的变量名,作用是占位
package main import "fmt" //int,string为返回值类型 func test()(int,string){ return 666,"我有大懒觉" }
//调用并把返回值赋予——和s func main(){ _,s:=test() fmt.Print(s) }
3.常量与枚举
声明常量
iota常量生成器
枚举类型