03: 编写你的第一个go程序 你的名字 2023-01-02 10:30 178阅读 0赞 不管什么编程语言,我们习惯性写的第一个程序就是hello world程序。似乎学会了编写hello world这门语言我们也就入门了。 开始创建我们的第一个go程序,这里我在GitHub上新建了一个仓库,命名为gostudy然后克隆到了本地,当然了,也可以不用这么做。 ## 第一个go程序 ## 前面我们见过使用vscode搭建go环境,今天我们使用另外一款IDE:`goland`。 其官方下载地址为:[https://www.jetbrains.com/go/][https_www.jetbrains.com_go] 如果可能的话购买个人版大概需要560人民币。。当然了推荐使用正版。如果不想的话网上有很多你懂的。 ## 使用Goland创建go工程 ## 这里我们选择直接从vcs拉取: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 1] 认证完成后,goland会自动登录并列出你仓库下面的项目: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 2] 选择对应的仓库项目,点击`clone`,等待完成。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 3] 然后创建go modules: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 4] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 5] 然后创建目录和文件,并写入如下的代码: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 6] package main import "fmt" func main(){ fmt.Println("Hello World!") } 接下来我们需要对项目进行一些配置: 使用`Ctrl+Alt+S` 打开配置面板: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 7] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 8] 国内镜像代理: GOPROXY=https://goproxy.io,direct 运行: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 9] 此时程序会执行go build 和 go run ,如果不进行配置的话,那么默认build后生成的可执行文件,windows为例在`C:\Users\用户名\AppData\Local\Temp`,当然了可以自己配置下: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 10] 程序执行结果: ![在这里插入图片描述][2021011214360548.png] 我们通过这个最简单的程序来看看一个go程序的一些基本概念。 ## 包 ## Go语言代码是通过包进行组织的,也就是package。包的概念如果大家接触过其他编程语言,大概类似于库或者模块。在Go中一个包是由位于单个目录下的一个或者多个go源代码文件组成。一般来说目录名称就是包名,当然两者也可以不同。go源代码文件开头都是以包名的声明开始,就是上例中的: package main `main`包比较特殊。它定义了一个独立可执行的程序,而不是一个库。在main里的main 函数 也很特殊,它是整个go程序执行时的入口。 Go 语言的编译程序会试图把main包编译为二进制可执行文件。所有用 Go 语言编译的可执行程序都必须有一个名叫 main 的包。一个可执行程序有且仅有一个 main 包。 在Goland中,我们可以在一个包中定义多个类似helloworld的go文件,但是在运行的时候,我们需要使用单文件配置,否则会提示在该包下有多个main入口。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 11] ## 导入语句import ## 我们必须告诉go编译器,在我们的代码中使用了哪些包。也就是下面的语句: import "fmt" 在go中大概有100多个内置包,这里截图看下,当然了这里并没有展示全部,大家可以在官方文档中查看所有的内置包。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 12] 导入语句我们可以分为两种,一种是单行导入,另外自然是多行导入了。 // 单行导入 import "fmt" // 多行导入 import ( "fmt" ) 注意多行导入是括号`()`,不是大括号`{}`,刚入坑受其他语言的影响一不留神就写错了。 ## main函数 ## main函数的写法就这样了。。。没什么可以深究的。官方怎么写我们就怎么来,几乎所有的语言都差不多长这个样子。 // 可执行程序入口 func main() { fmt.Println("Hello World!") } 至于函数的定义我们专门找一篇在聊。 ## 运行程序 ## 在Goland中,我们可以使用如下的方法运行go文件: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 13] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 14] 当然了,我们也可以自己定义运行配置,如果项目没有生成的话,可以自己手动添加: ![在这里插入图片描述][2021011217064652.png] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 15] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 16] 配置完成后,就可以点击右上角的运行按钮开始了。 ![在这里插入图片描述][20210112170804771.png] ## 使用命令行 ## 如果你偏爱使用命令行,当然页可以的。 * go run:用于对命令源码文件做 编译+链接 操作产生并生成临时的可执行程序并执行. 一般用于调试程序 go run go源代码文件名 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 17] * go build : 编译go文件,并生成可执行文件 go build go源代码文件名 ![在这里插入图片描述][20210112171449457.png] 命令成功后,默认会在当前目录下生成可执行文件。 ![在这里插入图片描述][20210112171755923.png] 然后你可以直接运行该可执行文件: ![在这里插入图片描述][20210112171833737.png] * go install : 用于构建+安装包,简单来说就是先执行go build,然后将生成的可执行文件拷贝到GOPATH指定目录的bin目录下。 go install go源代码文件名 ![在这里插入图片描述][20210112172029201.png] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 18] 由于我们已经将GOPATH加入了环境变量,所以我们可以直接使用该可执行文件: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 19] [https_www.jetbrains.com_go]: https://www.jetbrains.com/go/ [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70]: /images/20221119/cb44c881d69e42a982cf011b5aa7f48b.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 1]: /images/20221119/b43ccc9ffeb64f598f24fd6cda9d1483.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 2]: /images/20221119/f3a14aefe2574bb08891de1d4e482633.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 3]: /images/20221119/ef9a0877480f442faa1ddeef07a48e09.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 4]: /images/20221119/7ef1d6375a904293b16d461ed64a91ee.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 5]: /images/20221119/3200bc14cde54f28824c8695a9ea5590.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 6]: /images/20221119/1d63673b1b2144aaa66075053b148537.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 7]: /images/20221119/7b29aa6951b04deebc388d415fe3210f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 8]: /images/20221119/bc72c28507f44ca6a9b2373736d61ae7.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 9]: /images/20221119/37e02c1f46d74ebbaeede3762681f203.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 10]: /images/20221119/2c1c9417a32d4222903ff6fee58000a8.png [2021011214360548.png]: /images/20221119/640a18634a5f4a41b9548268906d3f52.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 11]: /images/20221119/2804275fb2104df4bc9d1ae510508255.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 12]: /images/20221119/ff7d447d398b40cd8f8ce1a40b121a91.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 13]: /images/20221119/557fc19391d64fba95d1e0797ad423a0.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 14]: /images/20221119/0f85f876ae854e19a9b55afb0280fdce.png [2021011217064652.png]: /images/20221119/12b47fb43306493398951d81338ab383.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 15]: /images/20221119/af7a94b483b149a9acf1a279515e1da2.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 16]: /images/20221119/773d62833aee417d99857a6bbf5a32f7.png [20210112170804771.png]: /images/20221119/6a599aafada44ccf80cf08176930f7f3.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 17]: /images/20221119/ecf93f65b8f04e42adfa4d1e7979f93c.png [20210112171449457.png]: /images/20221119/b73228365af74ed4bfe08461bcaec8db.png [20210112171755923.png]: /images/20221119/bfad153b1fe14808a3b6098434616768.png [20210112171833737.png]: /images/20221119/84ace1b10bd949cfa030f2f775e50003.png [20210112172029201.png]: /images/20221119/2011b3f3cf734b5db2fffa55befd6aed.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 18]: /images/20221119/285b274c76264d428220bb2bfd4869f4.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 19]: /images/20221119/f624ae6f0544447ab6956e66e16cb84c.png
还没有评论,来说两句吧...