GO 闭包

func main() {
   f := closure(100);  // 返回一个匿名函数
   fmt.Println(f(10))   // 运行匿名函数
   fmt.Println(f(11))
}

func closure(x int) func(int) int {
   // 创建匿名函数
   return func(y int) int {
    return x + y;
  }
}

打印结果
110
111

GO 数组

package main

import (
  "fmt"
)

func main() {
  a := [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
  // 获取索引5到8的元素
  fmt.Println(a[5:8])
  // 获取索引为5前面的元素
  fmt.Println(a[:5])

  // 获取索引为5后面的元素
  fmt.Println(a[5:])
  fmt.Println(a)
}
~           

Go 控制语句

IF

// 先初始化值再判断, 但是这个变量a只属于一个局部变量.当if条件执行完后就存在了.
if a := 1; a == 1 {
  
}

// FOR与无限循环

  i := 1
  for {
    i++
    if i > 1000 {
        break
     }
     fmt.Println(i)
  }

// FOR 自带条件表达式
  i := 1
  for i < 1000 {
    i++
     fmt.Println(i)
  }


// 经典模式
for i := 0; i<1000; i++{
 fmt.Println(i)
}

Switch CASE
switch case 不需要break, 如果想继续执行下个条件只需要在后面加上fallthrough

  a := 3
  switch a<5 {
    case a>0:
      fmt.Println("大于0")
      fallthrough
    case a>1:
      fmt.Println("大于1")
  }

Break

  LABLE1:
  for {
    for a := 0; a< 10; a++{
      if(a == 3) {
        break LABLE1 // 跳出与Lable1平级的循环
      }
    }
  }

goto 调整程序的执行位置

  LABLE1:
  for {
    for a := 0; a< 10; a++{
      if(a == 3) {
        goto LABLE1 // 这是一个无限循环, 当等于3的时候又将程序跳转到前面LABLE1的位置重新开始执行
      }
    }
  }

Go 指针

访问一个指针对象. 使用运算符 “*”
For example:
a := 1
var b *int = a
fmt.println(b) // 这样打印出的是变量a的指针
fmt.println(*b) // 这样打印出变量a指针所指向的值