1,go的变量声明顺序是:”先写变量名,再写类型名“,此C/C++的不同
2,go是通过package来组织的(与python类似),只有package名为main的包可以包含main函数,一个可执行程序有且仅有一个main包,通过import关键字来导入其他非main包。
3,可见性规则。go语言中,使用大小写来决定该常量、变量、类型、接口、结构或函数是否可以被外部包含调用。根据约定,函数名首字母小写即为private,函数名首字母大写即为public。
4,go内置关键字(25个均为小写)。
5,函数不用先声明,即可使用。
6,在函数内部可以通过 := 隐士定义变量。(函数外必须显示使用var定义变量)
7,go程序使用UTF-8编码的纯Unicode文本编写。
8,使用big.Int的陷阱:
9,从技术层面讲,go语言的语句是以分号分隔的,但这些是由编译器自动添加的,不用手动输入,除非需要在同一行中写入多个语句。没有分号及只需少量的逗号和圆括号,使得go语言的程序更容易阅读。
10,go语言只有一个循环结构——for循环。
11,go里的自增运算符只有——“后++”,自减运算符只有——“后--”,注意没有“前++”和“前--”
12,go语言中的slice用法类似python中数组
13,函数也是一个值,使用匿名函数返回一个值。
14,函数闭包的使用,闭包是一个匿名函数值,会引用到其外部的变量。
15、通过 import 关键字来导入其它非 main 包 通过 const 关键字来进行常量的定义 通过在函数体外部使用 var 关键字来进行全局变量的声明与赋值 通过 type 关键字来进行结构(struct)或接口(interface)的声明 通过 func 关键字来进行函数的声明
16、package别名 当使用第三方包时,包名可能会非常接近或者相同,此时就可以使用别名来进行区别和调用 如 import sensus "fmt",这样就把fmt的别名设为sensus
17、省略调用 当别名为一个点时,使用例如 import . "fmt" 不建议使用,易混淆 不可以和别名同时使用
18、类型零值 零值并不等于空值,而是当变量被声明为某种类型后的默认值,通常情况下值类型的默认值为0,bool为false,string为空字符串
19、类型别名 如 type( byte uint8 ruin int32 我是中文别名 string) 注意,go比较特殊的地方就是可以用中文来作别名,但不建议这么使用
20、引入的包没使用会报错
21、声明的变量不使用也会报错
22、一般不用写分号,编辑器会自动加上
23、一般的字符串不能使用单引号,可以使用双引号( " )或者反引号( ` )来创建,如fmt.Println('hello go')会报错
24、异常处理机制 Go没有提供“try-catch-finally”这样的异常处理设施,而仅仅提供了panic和recover,其中recover还要结合 defer使用。
25、在Go语言中单个字符可以使用单引号( ' )来创建。一个单一的字符可以用一个单一的rune来表示。这也是容易理解的,因为Go语言的字符串是UTF-8编码,其底层使用4个字节表示,也就是32 bit。
26、字符串处理 Go语言处理字符串的强大之处不仅限于对索引和切片的支持,很多官方包提供了大量的实用函数,可以对字符串进行很方便的操作。
27、所有变量都可以使用类型推断 也就是说不写类型,让系统自己推断
28、var的使用 全局变量的声明可使用 var() 的方式进行简写 全局变量的声明不可以省略 var,但可使用并行方式 局部变量不可以使用 var() 的方式简写,只能使用并行方式