1、2007年go开始开发,2009年正式发布
2、go是编译型语言,js是解释型语言
二者区别:代码需要翻译成机器码才能执行,从翻译工作进行的时机来看,有两种情况,一种是提前翻译好,然后就可以直接执行了,另一种是一遍执行一边翻译。语言是编译型还是解释型这个说法不严谨,比如js也可以提前翻译成机器码。xx型语言是指它通常的工作模式。
3、安装:
官方下载地址
go1.13.15.windows-amd64.msi windows 64位的话,直接下载这个就好了
安装好之后,要把go\bin添加到path一下。改好之后,打开一个终端,运行一下go version,看看是不是正常
4、下载ide,我用的是goland,创建一个项目
用goland打开后,设置goroot和gopath

左上角,依次点file-setting
goroot是go的安装目录,gopath是项目目录
第三步中设置的path环境变量,是为了可以全局访问go这个命令。不设置也没什么关系。goroot是指明当前这个工作区的go安装目录,完全可以设置的和path里的不一样,比如安装了多个go。当导入官方包时,就是从这个goroot里导入的。gopath是指明当前工作目录,当使用go get下载第三方包时,会将第三方包下载到$gopath/src下,导入第三方包时,也是从这个gopath下去找。gopath不一定要和你的工作目录一致,你完全可以在工作目录 d:/workspace/myproj上设置$gopath=c:administor/desktop,这样包就会下载到桌面的src目录下了。但这在通常情况下是没得任何意义,所以一般都设置gopath就是项目的根目录
5、创建文件hi.go
package main // 声明包
import "fmt" // 引入其他包
func main() {
fmt.Println("Hello, World!")
}
之后在当前目录下运行go run hi.go
就可以看见打印了
还可以通过go build hi.go
,生成可执行文件
6、go 包
5中的package main
声明了这个文件所属的包,每个.go
文件都必须声明自己所属的包。go里面的包有两种:
第一种是main包,是一个可以独立运行的完整程序。有没有觉得奇怪:这个代码里只声明里函数main,并没有调用它,那它是怎么执行的啊。这是因为这是main包,其中的main函数就是它运行的入口。实际上除了main函数会自动被执行,还有个init函数也会。init 函数是任何包都可以有。
func init() {
fmt.Println("init")
}
func main() {
fmt.Println("main")
}
第二种是提供特定功能的包,并不是一个完整的可以运行的程序,比如fmt
每个目录下,只能有一个包。也就是这个目录下所有的go文件都只能属于一个包。不能第一个文件是package a
,第二个是package b
fmt
是语言内置的包,通过go get
命令,可以下载第三方包。
比如下载一个开源的excel处理包go get github.com/xuri/excelize
,执行成功就会看到 $gopath的src下多了excelize的源码
网友评论