昨天安装了go包和vscode。今天开始我的第一个go节目。

创建项目和文件

在d盘上制作go的项目目录,并将所有go项目放在里面。

目录为:`D:\go_project`
  • 在项目目录中创建第1个项目文件夹first_project,目录即:`D:\go_project\first_project`
  • 打开vscode,点击`File`菜单,选择`Open Folder...`如图1,再选择我们步骤2中创建的目录`D:\go_project\first_project`如图2,点`选择文件夹`。vscode编辑器当前打开的就是我们刚才创建的项目`first_project`,我们通过vscode可以往项目中添加文件。
  • 图1

    图2

    4.新建第1个go文件。鼠标移动到项目名称上,会出现几个按钮,点击`新建文件`按钮,在下面的输入框中输入我的第1个go文件名称:`index.go`(go文件一般命名都以`.go`结尾),然后回车,创建完成(如图3)。创建完成,这个文件会自动在右侧编辑区域打开(如图4)。

    图3

    图4

    5.编写代码输入"hello,world"。

    查了一下,go语言有一些可以直接使用的内置函数(如`append`,后面会学到),除此之外可以引入包,使用包里面的函数。输入一段文字需要使用名为`fmt`的包。

    **包是什么?**

    我理解包就是一堆代码的集合,就像女生喜欢的`包`一样,它里面可以放很多乱七八糟的东西,只不过go语言里的包存放的是 `函数`、`结构(类)`,`变量(不知道是否正确,以后再验证)`等。


    **有什么作用?**

    1.隔离。如果你和我写的文件用了同名的变量或函数,如果没有包就会冲突,编译器可能不知道你用的是哪个,有了包那么使用时就可以使用包名加函数名区分,如包package1和package2下有同名的test函数,使用时()或()进行区分。

    2.复用。写代码肯定不希望每次都从头写,复用能提高效率。


    **go语言中的规定**

    1.任何一个go文件必须属于一个包。

    2.同一个目录下的同级的所有go文件应该属于一个包。

    3.包的名称可以跟目录不同名,不过建议同名。

    4.必须有且只有一个`main`函数,它是go语言的入口函数,也就是程序启动第1个要执行的函数。且main函数必须属于main包。也就是说go语言必须有一个main包。

    所以必须知道怎么让一个文件属于一个包?语法如下,其中`xxx`为包名:

    package xxx

    例如包名为`main`

    package main


    引入一个包的语法,其中`xxx`为包名:

    import "xxx"

    例如引入"fmt"包

    import "fmt"

    我在`index.go`文件中写入的内容如下:

    package main import "fmt" func main() { ("hello world") }

    因为上一篇文章<<今天想学习一门编程语言>>中安装了`code runner`插件,所以在编辑的`index.go`内容任意处鼠标右键,选择`Run Code`可运行代码,并可在输出面板`OUTPUT`处看到运行结果:

    vscode中运行程序

    `OUTPUT`输出结果处也会显示运行的命令`go run`(学习go语言使用的第1个命令),其实跟使用命令行是等同效果(如下图),所以`code runner`真的很方便。

    `go run`命令会编译源码,并且直接执行源码的 main() 函数,不会在当前目录留下可执行文件。


    有用的插件

    在编写index.go的时候vscode总提示几个go扩展的命令不可用(如下图),可以点击Install进行安装,但在安装前我需要弄明白这些插件都有什么作用:

    安装go的一些包或插件时总失败,因为包或插件地址在国外,所以需要设置一下go的国内代理。这里可以先用`go env`查看go的所有环境配置。其中需要设置的是`GOPROXY`环境变量。命令为:

    go env -w GOPROXY=我是国内地址上网随便可搜到,direct

    go help env 可以查看go env的用法

    1. go env -json: 环境变量以json格式输出。

    2. go env -w XXX=xxx: 如上面设置代理,设置属性XXX使用自定义的值xxx代替安装时的默认值。

    3. go env -u XXX:删除通过`go env -w`设置的值,还原回默认值。

    我猜`默认值`和`go env -w`设置的值分两个文件,使用环境变量时,`go env -w`文件的值会覆盖`默认值`文件的值。`go env -u`只会删除`go env -w`文件的值,所以又会恢复默认值。【待验证】

    1.goimports是什么?

    goimports是Go官方提供的工具,可以自动对代码中的依赖包进行管理,如果有用到,就会自动`import`,对没有用到的包进行自动删除。并且goimports也具有`gofmt`的功能。

    `gofmt`可以格式化go的代码。网上说vscode可以设置保存时自动格式化代码。但我在`swith fron gofmt to goimports`之前的操作都没有成功:

    如果vscode没有提示安装`goimports`,也可以手动安装。打开命令行,直接输入安装命令:

    go get -v 我是go官网地名/x/tools/cmd/goimports

    因为修改了`GOPROXY`很快就安装成功,重启vscode,之前写的代码再保存一下,自动格式化了。

    2.gopls是什么?

    gopls可以实现代码自动完成,转到定义,查找所有引用等功能。它是 LSP(全称 Language Server Protocol,即语言服务器协议) 的一个语言端(Server)实现,是针对 Go 语言的 LSP 实现。有兴趣可自行了解。

    gopls的安装可以通过提示点击Install进行安装,也可以使用上面安装goimports的方式手动安装(安装命令:`go install -v 我是go官网地名/x/tools/gopls@latest`),这里再学习一种新的vscode安装插件的安装方式。

    (1)ctrl+shift+P 打开 执行命令的输入框,输入go:install 就可以看到`Go:Install/Update Tools`(如图),选择它自动跳转后,可以看到go的工具列表。

    图5

    (2)选择gopls,点击OK进行安装

    图6

    (3)OUTPUT处会显示安装成功

    3.go-outline是什么?

    go-outline可以解析结构体tag标签里面的json信息。以后会学习到的,先安装再说。

    总结

    1. 任何一个go文件必须属于一个包。
    2. go必须有一个main包。
    3. go必须有且只有一个main函数,且它属于main包,是go语言的入口函数。
    4. 包的名称可以跟目录的名称不同名,建议同名,自己好找到文件。
    5. 文件包名语法`package xxx`,并且必须在文件除注释外第1行。
    6. 引入包语法`import "xxx"`,以后还会学到1个Import引入多个的包的语法。
    7. go env 查看所有go的环境变量。
    8. go env -w 设置环境变量。
    9. go env -u 删除通过go env -w设置的环境变量,还原成安装时的默认值。
    10. 要设置`go env -w GOPROXY`后才能顺利下载go包和工具。
    11. goimports可在保存文件时自动格式化,自动`import`,对没有用到的包进行自动删除。
    12. gopls实现代码自动完成,转到定义,查找所有引用等功能。
    13. go-outline可以解析结构体tag标签里面的json信息。

    1.《关于环境2.0怎么安装程序,你需要知道这些2.第1个go程序》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

    2.《关于环境2.0怎么安装程序,你需要知道这些2.第1个go程序》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

    3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/3072851.html