1. 变量定义和使用
- 多种变量赋值方式
赋值可以进行类型推断
func TestFibList(t *testing.T) {//var a int = 1//var b int = 1//var (// a int = 1// b = 1//)// 类型推断a := 1b := 1fmt.Print(a)for i := 0; i < 5; i++ {fmt.Print(" ", b)tmp := aa = bb = tmp + a}fmt.Println()}
在一个赋值语句中对多个变量进行赋值
func TestExchange(t *testing.T) {a := 1b := 2//tmp := a//a = b//b = tmpa, b = b, at.Log(a, b)}
2. 常量定义与使用
快速设置连续值 ```go const ( Monday = 1 + iota Tuesday Wednesday )
const ( Readable = 1 << iota Writable Executable )
func TestConstantTry(t *testing.T) { t.Log(Monday, Tuesday, Wednesday) t.Log(Readable, Writable, Executable) a := 7 t.Log(a&Readable, a&Writable, a&Executable) }
- iota的使用- iota只能在常量的表达式中使用- 每次 const 出现时,都会让 iota 初始化为0```goconst a = iota // a=0const (b = iota //b=0c //c=1 相当于c=iota)
- 可跳过的值(下划线) ```go //如果两个const的赋值语句的表达式是一样的,那么可以省略后一个赋值表达式。 type AudioOutput int
const ( OutMute AudioOutput = iota // 0 OutMono // 1 OutStereo // 2 OutSurround // 5 )
- iota 在下一行增长,而不是立即取得它的引用```goconst (Apple, Banana = iota + 1, iota + 2Cherimoya, Durian // = iota + 1, iota + 2Elderberry, Fig //= iota + 1, iota + 2)// 输出// Apple: 1// Banana: 2// Cherimoya: 2// Durian: 3// Elderberry: 3// Fig: 4
3. 基本数据类型
| bool | 布尔值 |
|---|---|
| string | 字符串 |
| int,int8,int16,int32,int64 | 整数,不带位数表示根据运行平台确定 |
| uint,uint8,uint16,uint32,uint64 | 无符号整数,不带位数表示根据运行平台确定 |
| byte | alias for uint8 |
| rune | alias for int32 |
| float32,float64 | 浮点数 |
| complex64,complex128 | 复数 |
类型的预定义值
- math.MaxInt64
- math.MaxFloat64
- math.MaxUint32
4. 指针类型
5. 字符串
6. 算数运算符
7. 比较运算符
8. 比较数组
相同维数切含相同个数的数组可以用比较符直接比较,每个元素都相等,数组则相等。
数组的比较不是引用比较而是值比较。
9. 逻辑运算
10. 位运算
11. 循环结构
12. 条件语句

13. swith条件


func TestSwitchMultiCase(t *testing.T) {for i := 0; i < 5; i++ {switch i {case 0, 2:t.Log("Even")case 1, 3:t.Log("Old")default:t.Log("it is not 0-3")}switch {case i%2 == 0:t.Log("Even")case i%2 == 1:t.Log("Old")default:t.Log("impossible")}}}
14. 总结
可以看出与java相比而言,Go提供了更少了语法选择,但却不失灵活性。





