MacOS下搭建Go语言环境

一、下载安装

https://go.dev/dl/

官网下载mac版本

M芯片的mac下载ARM64这个,其他都下载x86-64这个

下载后直接安装即可

验证是否安装成功,自己再命令行输入以下内容,得到版本号说明安装成功

二、配置环境

终端输入如下命令进行环境变量配置

1
vim ~/.zshrc

在结尾添加如下内容(vim的操作不会的请自行查阅)

1
2
3
4
# golong
export GOPATH=/Users/long/golang
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN

需要注意,第二行的目录请修改为你自己创建的准备存放go语言项目文件的文件夹

添加后回到终端,输入以下内容刷新环境变量配置

1
source ~/.zshrc

再输入

1
go env

查看刚刚的配置是否生效

看到这个GOPATH改了就一定没问题了

三、运行hello world

运行在VsCode

在刚刚配置gopath路径的文件夹里面创建这三个文件夹

bin存放编译后的二进制文件,pkg存放编译后的库文件,src存放代码

然后去vscode里面安装go的插件

安装成功后,在src文件夹里面创建一个文件夹,再创建一个go文件

这个创建建议在vscode里面创建

创建完main.go文件之后,vscode就会自动弹出go的插件说明,然后右下角会弹出需要我们安装一些库文件,注意!这个时候不要直接点击Install All按钮,因为大概率是无法安装成功的,需要配置一下

回到命令行分别输入这三行代码

1
2
3
4
5
go env -w GOPROXY=https://goproxy.cn,direct

go env -w GOSUMDB=off

go env -w GOSUMDB=sum.golang.google.cn

然后再回到vscode里面点Install All按钮,这个时候基本就没问题了

然后再安装go插件所依赖的go tools,按command+shift+p 打开命令面板

输入go install tools

进入之后,把所有都勾选了

然后点确定,就会自动安装这些了

至此,所有需要的配置都完成了,接下来写代码即可

1
2
3
4
5
6
7
package main

import "fmt"

func main() {
fmt.Println("hello world!")
}

注意写完要保存一下,然后在vscode的终端里输入如下内容

运行在GoLand

⚠️注意,先让你的电脑能把go在vscode里面运行,再运行在goland,因为在vscode运行需要配置一些环境,配置好之后,goland里面就不用配置了一把过。

官网下载goland

https://www.jetbrains.com.cn/go/

正常安装即可

打开后只有三十天免费,这里如下图方式激活,输入http://jetbrains-lic.novx.org

成功激活

直接点New Project,然后按照提示直接下一步到底

它会在用户文件夹里面自动创建一个文件夹,路径如下:/Users/long/GolandProjects/awesomeProject

然后和之前在vscode里面一样,新建一个hello文件夹,然后创建一个hello.go文件,里面写helloworld代码

1
2
3
4
5
6
7
8
package main

import "fmt"

func main() {
fmt.Println("hello world!")
}

右键 Run一把运行成功

四、通过简单的程序了解go语言的语法

1、计算从1+2+3+….+100的结果

1
2
3
4
5
6
7
8
9
10
11
package main //声明了该程序的包名为main。在Go中,每个可执行程序都必须在一个名为main的包中声明,并包含一个名为main的函数

import "fmt" //导入了fmt包,该包包含了Go语言的输入输出函数

func main() { //是程序的入口,代表程序的主要执行过程
sum := 0 //声明了一个名为sum的变量并初始化为0
for i := 1; i <= 100; i++ { //是一个循环,从1开始,循环到100,每次将i加1。循环体内的语句每次都会被执行
sum += i //将i加到sum中
}
fmt.Println("The sum of 1 to 100 is", sum) //调用了fmt包中的Println函数,用于将字符串和sum的值输出到控制台
}

2、对输入的分数进行判断,若大于60则输出及格,若小于60则输出不及格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package main

import "fmt"

func main() {
var score int //声明了一个名为score的变量,类型为int
fmt.Println("Please enter the score:")
fmt.Scanln(&score) //调用了fmt包中的Scanln函数,用于从控制台读取输入,并将读取的值存储在score变量中

if score >= 60 {
fmt.Println("Pass.")
} else {
fmt.Println("Fail.")
}
}

3、简单的爬虫程序

访问一个URL,并判断其响应码是否为200,从而输出相应结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main

import (
"fmt"
"net/http" //net/http包提供了用于发送HTTP请求的函数
)

func main() {
var url string

fmt.Println("Please enter a URL:")
fmt.Scanln(&url)

resp, err := http.Get(url)
if err != nil {
fmt.Println("Failure")
return
}

if resp.StatusCode == 200 {
fmt.Println("Success")
} else {
fmt.Println("Failure")
}
}

解释相关代码

err:err变量通常用于记录调用函数返回的错误对象,如果函数调用成功,则err的值为nil,表示没有错误;如果函数调用失败,则err的值不为nil,存储了错误的详细信息


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!