【Go从学会到学废】(二) Hello World

406 阅读2分钟

1、新建Hello.go

package main

import "fmt"

func main() {
   fmt.Println("Hello World")
}

2、运行

你可以输入 go run Hello.go直接运行

image-20201014222035496

也可以先编译 go build Hello.go在运行

image-20201014222145101

3、解释

1.package main

  • 文件包名,指明文件所处的包位置,默认设置为该文件所处的文件夹名字。如文件test.go,则test.go的包名即为test

  • 这里包名命名为main并不是说,它在文件夹main下,而是说它是一个主文件,是一个项目或者模块的主程序,意味能直接编译运行的源码文件。算是go程序的主入口。一个项目一个主程序入口。

  • 与java不同的是:

    在java中,任何一个java文件都可以有唯一一个main方法当做启动函数

    在go中,则是任何一个package中,都可以有唯一一个带有main方法的go文件

2.import "fmt"

  • 导入包
  • 上面这个fmt是Go语言的标准库,他其实是去GOROOT下去加载该模块
  • ==不用的包一定不要导入,会报错==
  • 当然Go的import还支持如下两种方式来加载自己写的模块: 相对路径 import "./model" //当前文件同一目录的model目录,但是不建议这种方式import 绝对路径 import "shorturl/model" //加载GOPATH/src/shorturl/model模块

1、包使用的时候通常用最后一层路径来引出方法或变量:

import "xxx.com/go-qb/db"

用法:db.X()

2、如果想重命名,在引用前面加别名即可:

import mysql "xxx.com/go-qb/db"

用法:mysql.X()

3、如果想不加前缀,在引用前面加 . 即可:

import . "xxx.com/go-qb/db"

用法:X()

3.func main()

  • 在golang中有两个特殊的函数,

    func main

    func init

  • main函数不用介绍在所有语言中都一样,它作为一个程序的入口,只能有一个。

  • init函数在每个package是可选的,可有可无,甚至可以有多个(但是强烈建议一个package中一个init函数),init函数在你导入该package时程序会自动调用init函数,所以init函数不用我们手动调用,l另外它只会被调用一次,因为当一个package被多次引用时,它只会被导入一次

  • =={}必须紧随(),不能换行,这是Go强制规定==

4.fmt.Println("Hello World")

  • ==Println首字母大写,不可能是小写,具体原因下章讲==

类似于C中

printf("Hello World");

类似于C++中

cout<<"Hello World"<<endl;

类似于java中

System.out.println("Hello World");

类似于Python or Lua中

print("Hello World");

个人观点

  • 函数关键字为什么是 func,为什么不写全 function或者像 Python那样 def(事实上是谷歌创始人贡献了这个关键字)