写给前端工程师的Golang入门教程 —— 基本语法

296 阅读2分钟

在前端我们主要使用JavaScript作为主要开发语言,我们来逐一对比JavaScriptGolang的语法特性,来帮助前端工程师更快入门Golang

变量声明

JavaScript中,使用varlet关键字来声明变量

{
  let a = 10
  var b = 1
}

Golang中,同样使用var关键字声明变量

var a = 10

由于Golang是一门强类型的语言,如果省略了类型声明,编译器会做类型推导,上面这种变量声明方式实际上等价于

var a int = 10

在函数中,使用:=符号可以更简便的声明并初始化变量

func main() {
  a := 10
}

除了变量,我们还有声明常量的需求,GolangJavaScript常量的声明方式也是一样的

const a = 10

条件语句

JavaScript条件分支语法继承自C语言

let a = 10
if (a > 0) {
  console.log(a)
}

Golang的条件分支不带小括号,支持在条件里写多个表达式,用;号分割,并且在条件里声明的变量只在if条件模块内部有效

if a := 10; a > 0 {
  fmt.Println(a)
}

条件分支中最容易忽略的是switch结构。

JavaScript中,每个case要使用break关键字终止流程

switch (fruit) {
  case "banana":
    // ...
    break
  case "apple":
    // ...
    break
  default:
    // ...
}

Golang很人性化,每个case会自动break

switch fruit {
  case "banana":
    // ...
  case "apple":
    // ...
  default:
    // ...
}

如果需要顺序执行代码,还加fallthrough关键字

循环语句

JavaScript中,循环语句有whiledo whileforfor infor of

Golang中,没有那么多花里胡哨的东西,只有万能的for

for i := 0; i < 100; i++ {
  fmt.Println(i)
}

for的起始条件、递增条件、结束条件都是可选的,甚至可以不带任何条件,就表示一个死循环

for {
  // ...
}

函数

JavaScript中,函数用function关键字声明

Golang中,函数用func关键字声明,并且与JavaScript一样,函数是一等公民,支持闭包

func createIncrementor(start int) func() int {
 return func () int {
   start++
   return start;
 }
}
  

func main() {
 inc := createIncrementor(5);
  
 inc() // 5
 inc() // 6
 inc() // 7
}

欢迎关注我的公众号“野生程序员的修炼”,原创技术文章第一时间推送。