这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记。经过了一些基础内容的学习我简单对比了一下go和java语言的区别。
基础语法方面:
package main
import (
"fmt"
"math"
)
func main() {
var b, c int = 1, 2
var d = true
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 = 500000000
const i = 3e20 / h
fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
}
go定义变量时可以直接用var来定义,自动推导出类型,但是java必须指明变量类型,java在定义变量时是类型前置,但是go是类型后置,go的赋值方式类似matlab用:=的方式进行赋值,此外,go语言和python一样不是以;结尾。
package main
import "fmt"
func main() {
if 7%2 == 0 {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd")
}
for j := 7; j < 9; j++ {
fmt.Println(j)
}
}
go的循环和判断和java的区别在于go没有(),go的判断{必须和if在同一行,java则没有这要求。
运行方面
go文件可以使用go run命令直接运行,也可以使用go build命令进行编译,然后再执行,而java文件要先用javac命令编译成字节码,再用java命令执行。
并发方面
go只要用关键字go就能开启一个goroutine,java要new Thread,goroutine也是go优于java最大的特性之一,非常轻量级的线程,适合高并发的情景,goroutine可以理解为可以并发的协程,同时他可以运行在一个或多个线程上,非常高效。