Go语言使用编译运行工具
环境:win7
工具:sublime(文本编辑器)--个人喜好
软件:go1.17.8.windows-amd64.msi (来源官网:https://golang.google.cn/)
1.安装好软件和编辑器。(记住自己安装所在的地方,忘记了就卸载重装吧!)
2.查看go安装情况。点击开始-> 输入cmd->输入go version。如下图

3.配置文本编辑器。
点击工具栏Tools->Build System->New Build System,会新打开文本输入界面。复制如下文本并保存为go.sublime-build:
{
"cmd": ["go", "run", "$file_name"],
"file_regex": "^[ ]*File \"(…*?)\", line ([0-9]*)",
"working_dir": "$file_path",
"selector": "source.go"
}
4.新建个文件命名为main.go,将官网上的代码拷贝或手抄该文件。
// You can edit this code! // Click here and start typing. package main import "fmt" func main() { fmt.Println("Hello, 世界") }
5.运行代码
点击工具栏Tools->Build System->go
再按快捷键ctrl+b
将再控制台显示如下:
Hello, 世界
[Finished in 4.4s]
6.思考
1.为啥运行头次运行贼慢,等了10秒左右才显示出来。
2.go语言命名包,是为了什么,不能依靠文件夹来确定自己身所在的包么?
7.Go语言组成部分由以下部分组成:
- 包声明
- 引入包
- 函数
- 变量
- 语句 & 表达式
- 注释
/* 这是多行注释
* 当前代码说明
* root :代码根路径
* root/main.go
* root/child/add.go
* root/child/sub.go
*/
/**** main.go 代码 ******/
package main //这一行是包声明
import ( //这一行是引用包
"fmt"
"./child" //调用文件夹,go自动获取文件中的包名
)
func main() { //这一行是函数声明
fmt.Println("Hello, World!");
fmt.Println(child1.Add(1,3)); //child1 是 child文件夹中文件定义的包名
fmt.Println(child1.Sub(2,4));
}
/**** main.go 代码结束 ******/
/**** add.go 代码 ******/
// child文件夹中,只能有一个包名
package child1;
//理解为私有函数,外部不可调用
func self() int {
return 3
}
//模块中要导出的函数,必须首字母大写。
//理解为 公有函数
func Add(a,b int) int {
return a+b+self(); //语句 & 表达式
}
/**** add.go 代码结束 ******/
/**** sub.go 代码 ******/
package child1;
func Sub(a,b int) int {
return Add(a,b)-b; //调用同级目录下的函数
//如果main.go中调用同级main包,
//则go编译器直接执行main.go所在目录
}
/**** sub.go 代码结束 ******/
8.Go语言引入自定义包问题
- Go调用自定义包报错build command-line-arguments: cannot find module for path
//---------------------解决方法--------------------------------- //在终端输入:go env -w GO111MODULE=auto
- Go引用包后,不使用包中函数或变量等,报错提示如下:
# command-line-arguments .\main.go:25:2: imported and not used: "文件路径" as 包名
//---------------------解决方法--------------------------------- import ( "fmt" _"./child" //包名前使用下划线就不会提示该错误 )
- Go一个目录中,有多个包时,会报错,如下:
main.go:25:2: found packages child1 (add.go) and child2 (sub.go) in 提示中拥有两个包名:child1 和 child2
- Go语言调用包中的函数,函数首字母没有大写,导致报错如下:
// 该函数发生错误:cannot refer to unexported name
func main {
fmt.printf("输出"); //改行会报错
//golang的语法:模块中要导出的函数,必须首字母大写
fmt.Printf("输出"); //该行代码执行成功
}
浙公网安备 33010602011771号