// 单行注释
/*
多行注释
*/
变量的声明必须用空格隔开
var age int
数值类型(包括complex64/128)为 0
布尔类型为 false
字符串为 ""(空字符串)
以下几种类型为 nil:
var a *int
var a []int
var a map[string] int
var a chan int
var a func(string) int
var a error // error 是接口
所以说,go中的空并不能直接等于nil
var i = 1
fmt.Printf("%T",i) >>> int
i := 1
fmt.Printf("%T",i) >>> int
这两种方式是相同的
//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3
var vname1, vname2, vname3 = v1, v2, v3 // 和 python 很像,不需要显示声明类型,自动推断
vname1, vname2, vname3 := v1, v2, v3 // 出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误
常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
const identifier [type] = value 可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。 显式类型定义: const b string = "abc" 隐式类型定义: const b = "abc" 常量还可以用作枚举: const ( Unknown = 0 Female = 1 Male = 2 ) 数字 0、1 和 2 分别代表未知性别、女性和男性。
- ###关系运算符

跟python差不多
`注意,只能同类型的进行关系比较,如果int 类型与string类型进行比较,编译不过,提示
(mismatched types int and string)`
- ###逻辑运算符

&& >> and
|| >> or
! >> 非 (!true) >>false
```
异或的理解:按位异或运算符,参与运算的两个二进制对应位进行异或,两数位相同,异或得0,两数位不同时,异或得1.
go没有三目运算符,所以不支持?:形式的条件判断
匿名变量
就是没有名字的变量,在使用多重赋值的时候,如果不需要在左侧接受变量,就可以使用匿名变量
函数名还可以有空格?
原文:https://www.cnblogs.com/0916m/p/11481994.html