go学习开篇
我是做java开发的,从接触java开始算,已经8年了,为什么会想到学go语言呢?前端时间我一直在学习jvm,java的一些更底层的东西,梳理回顾时,感觉可以通过学习其他开发语言,来提升我对java的理解,站在另一个角度来看java。但是又怕是蜻蜓点水式的学,达不到效果,于是有了接下来的文章,希望能写下去。
go的历史这里就不谈了,算一个很有背景的语言。后面的文章内容,基本都会涉及到go语言和java的比较。
我们开始吧!我们先向以前的编程前辈致敬,来一个hello world。
package main import "fmt" func main() { // 单行注释 /* 多行注释 */ fmt.Println("Hello, World!") }
代码分三部分
- 包声明
- 导入包
- 函数
包声明:go语言限制程序入口的go文件,必须命名为main,否则报错。
go run: cannot run non-main package
导入包:后面的输出语句用到了fmt包。但是go语言有个不同的地方是如果后面代码里没有用到前面导入的bao,将会报错。
# command-line-arguments ./hello_world.go:4: imported and not used: "flag"
函数:我们看到go语言的入口是一个函数,没有类存在。func是go语言定义函数的关键字。函数名是main,入口函数约定了函数名必须叫main,否则报错:
# command-line-arguments runtime.main: call to external function main.main runtime.main: main.main: not defined runtime.main: undefined: main.main
注释:代码中我们能看到有单行注释和多行注释的格式。
我们看到函数后面跟了一个 大括号({ ),很多人会觉得这只是一些编程习惯。其实go语言语法要求大括号的前半部分必须要接在一个语句后面,不能另起一行,如下:
xxx { yyyy }
否则,报错:
# command-line-arguments ./hello_world.go:6: syntax error: unexpected semicolon or newline before {
后面go语言的其他地方,都有这方面的要求。
我们看看java语言的hello world 。
public class Test { public static void main(String args[]) { System.out.println("hello world !"); } }
其实java的限制就很少了,我们的包名都可以不设定,他只是对main方法有要求。go里面没有要求mian方法归属一个类。
松下问童子,言师采药去。
只言此山中,云深不知处。