我为什么要学习go语言啊?大概是因为它现在很火吧,而且我自信学习能力强,学新东西快,所以我就开学啦。首先在下载页下载https://golang.google.cn/dl/,然后安装。再安装开发工具,因为我有正版JetBrains全家桶,所以我可以用GoLand了,在GoLand主页https://www.jetbrains.com/go/下载就可以了。
来个标准的版本测试,哈哈表示安装成功了:
PS C:\Users\lenovo> go version
go version go1.18.4 windows/amd64
PS C:\Users\lenovo>
然后就是安装Goland,设置GOPATH了。这个变量按照规范,应该是用户目录下的go文件夹,我是自己手动建的,我的用户名是Lenovo,所以我在C:\Users\lenovo\下建了go文件夹,再把GOPATH设置为C:\Users\lenovo\go,如图:
虽然搭建好了开发工具,但是第一个程序我就不用开发工具了,直接记事本写起来,文件都是main.go嘛,反正也很短:
package main
import "fmt"
func main() {
fmt.Println("Hello, world!")
}
然后就是命令行了:
PS F:\learn\go\demo2> go run main.go
Hello, world!
PS F:\learn\go\demo2>
但是我写完以后没搞懂很多东西。首先是package,这个package必须得叫main,否则就无法执行,为此我做了一个实验,哈哈:
package x
import "fmt"
func main() {
fmt.Println("Hello, world!")
}
这么一执行,就果断报错了:
PS F:\learn\go\demo2> go run x.go
package command-line-arguments is not a main package
PS F:\learn\go\demo2>
GoLang的包是可以不和文件夹同名的,这点让我很惊讶,不过适应了就好了。而还有一点让我不适应的是函数名是大写字母开头,这与我之前学习的用得最多的Java语言很不同。
文件名是没有什么关系的,可以不叫main.go,我复制了,改成start.go也可以运行:
PS F:\learn\go\demo2> go run start.go
Hello, world!
PS F:\learn\go\demo2>
GoLang是可以生成可执行文件的,我好久没编译过exe文件了,这次特别激动,迫不及待地试一试。
PS F:\learn\go\demo2> go build .\main.go
PS F:\learn\go\demo2> ls
Directory: F:\learn\go\demo2
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 25/07/2022 16:43 1892352 main.exe
-a---- 25/07/2022 15:10 74 main.go
-a---- 25/07/2022 15:10 74 start.go
PS F:\learn\go\demo2> .\main.exe
Hello, world!
Go的main函数是没有参数的,那么怎么获取命令行输入的参数啊?我对这个很有兴趣。于是练习了起来,原来是要引入os包才能获取命令行参数。代码撸起来:
package main
import (
"fmt"
"os"
)
func main() {
for i := 1; i < len(os.Args); i++ {
fmt.Print(os.Args[i], ",")
}
fmt.Println()
fmt.Println("Hello, world!")
}
试验了一下:
PS F:\learn\go\demo2> go build start.go
PS F:\learn\go\demo2> .\start.exe 1 2 3
1,2,3,
Hello, world!