o(* ̄︶ ̄*)o

  博客园  :: 首页  ::  :: 联系 :: 订阅 订阅  :: 管理

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("输出"); //该行代码执行成功   
}            

 

 

posted on 2022-03-07 23:31  熊本熊の熊  阅读(222)  评论(0)    收藏  举报