Go语言入门基础0201 | 青训营笔记

106 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第1天。

写这篇笔记主要想总结整理一下Go的基础语法。

Go语言的一些优点

  • 高性能、高并发
  • 语法简单(感觉和C++有很多相似之处,学习成本相对更低)
  • 标准库丰富
  • 编译速度快、性能好
  • 跨平台

最简单的Go代码

package main

import (
	"fmt"
)

func main() {
	fmt.Println("hello world")
        // 单行or多行注释用法同C++
        // 一行代表一个语句结束,不需要加分号 ;
}

基础语法

变量、常量、运算符与数据类型

强类型:int、float、string、bool等;string是内置类型,可以通过+拼接,也可以用=比较两个字符串

变量声明方法:var v_name type = value(可不显式写出类型)或v_name := value(这是声明 不能对已声明的变量做:=)

运算符:使用方法和优先级与C++中类似

常量const:没有确定的类型,根据上下文自动确定

条件语句

Go没有三元运算符?:

if-else(if-else if-else)

语法要点:与C/C++语法类似,但不需要对判断条件加括号;必须对每一个条件代码加大括号,不能像C++一样对单行的条件代码省略大括号

switch-case

a := 2
switch a {
case 1:
        fmt.Println("one")
case 2:
        fmt.Println("two")
case 3:
        fmt.Println("three")
case 4, 5:
        fmt.Println("four or five")
default:
        fmt.Println("other")
}
t := time.Now()
switch {
case t.Hour() < 12:
        fmt.Println("It's before noon")
default:
        fmt.Println("It's after noon")
}

语法要点:switch后的判断语句不要加括号;不需要break语句,执行到一个case/default后会直接跳出当前结构;switch后的判断语句可以替代if-else语句,功能更强大

循环语句

Go没有whiledo-while循环语句

for

for j := 7; j < 9; j++ {
        fmt.Println(j)
}

语法要点:for后面的三段不要加括号;与C++类似,for后面的三段中任何一段都可以不写,如果三段都不写也不需要加分号(类似于while(1)?);支持通过循环控制语句breakcontinue跳出循环,用法和C++中类似

函数

func add(a, b int) int {
	return a + b
}

语法要点:变量类型后置;默认函数传递的是值而非引用;函数允许返回多个值(实际业务中通常返回两个值,第一个为实际结果,第二个为错误信息)