go语言入门 : 基础语法 | 青训营笔记

132 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记

Go 入门

什么是go语言

  • 高性能、高并发
  • 语法简单、学习曲线平缓(易上手)
  • 丰富的标准库
  • 完善的工具链
  • 静态链接
  • 快速编译
  • 快平台
  • 垃圾回收

基础语法

Hello World

package main  // main 包 代表是可执行

import "fmt" // 负责输入输出的包

func main()  { // main方法是入口方法
    // 打印字符
	fmt.Print("Hello World")
}

变量定义

package main

import (
   "fmt" 
   "math" // 数学计算工具包
)

func main()  {
   // 声明变量的两种方式 使用 var 或者 :
   var a = "initial"
   // 变量后面可以跟上变量类型
   var b , c int = 1 , 2
   var d = true
   // 或许可以理解为java中的double 和 float
   var e float64
   f := float32(e)
   g := a + "foo"

   fmt.Println(a, b , c , d, e, f)
   fmt.Println(g)
    // 声明常量
   const s string = "constant"
   const h = 500000
   // 变量右侧依旧可以使用科学计数法和计算表达式
   const i = 3e20 / h
   fmt.Println(s, h , i, math.Sin(h), math.Sin(i))
}

判断语句

func main()  {

   if(7 % 2 == 0){ // if 后面加括号不会报错,但是实际上运行时括号也会被去掉
      fmt.Println("7 is even")
   } else if 7 % 2 != 0 { // 通常不写括号就ok啦
      fmt.Println("7 is odd")
   } else {
      fmt.Println("不会轮到我执行")
   }

   if num:= 9 ; num < 0 {
      fmt.Println("if后面可以定义变量")
   } else if num < 10 {
      fmt.Println("并且之前if中定义的变量后面判断中依旧能使用,甚至方法体内也可以使用")
      fmt.Println(num)
   }
   //fmt.Print(num) 外界不可以使用

}

循环语句

// 只有for循环了,没有while了
func main()  {
   i := 1

   for j := 7; j < 9; j++ {
      fmt.Println("普通循环")
      if j % 2 == 0 {
         continue // 同样的continue ,跳 过 当前循环
      }
       if j == 8 {
           break // 同样的break ,跳 出 当前循环
       }
      fmt.Println(j)
   }

   for i <= 10 {
      fmt.Println(i)
      i++
      fmt.Println(i)
      i += 1
      fmt.Println(i)
      i = i + 1
      fmt.Println(i)
      fmt.Println(i+1)
      //fmt.Println(i++) // i++放在输出里面也会报错
      //++i // 没有++i了
   }

   for  {
      fmt.Println("我是个死循环")
   }


}

switch 分支

func main()  {
   a := 2
   // 不需要break 也不会往下执行
   switch a {
   case 1:
      fmt.Println("1")
   case 2:
      fmt.Println("2")
   default:
      fmt.Println("other")
   }

   time := time2.Now() // 获取当前时间
   // 不传入任何参数,直接跑case里面按顺序判断了,类似if else
   switch  {
   case time.Hour() < 12:
      fmt.Println(time, "获取时间太方便了吧","而且都直接把if替代了")
   default:
      fmt.Println(time,"感觉都类似于else了")
   }
}