go 入门 | 青训营笔记

103 阅读1分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第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) // initial 1 2 true 0 0
	fmt.Println(g)                // initialapple

	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可以理解为可以并发的协程,同时他可以运行在一个或多个线程上,非常高效。