2。第1个go程序
昨天安装了go包和vscode。今天开始我的第1个go程序。创建项目和文件在D盘创建一个go的项目目录,把所有的go项目放里面。目录为:D:goproject在项目目录中创建第1个项目文件夹firstproject,目录即:D:goprojectfirstproject打开vscode,点击File菜单,选择OpenFolder。。。如图1,再选择我们步骤2中创建的目录D:goprojectfirstproject如图2,点选择文件夹。vscode编辑器当前打开的就是我们刚才创建的项目firstproject,我们通过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函数,使用时package1。test()或package2。test()进行区分。
2。复用。写代码肯定不希望每次都从头写,复用能提高效率。
go语言中的规定
1。任何一个go文件必须属于一个包。
2。同一个目录下的同级的所有go文件应该属于一个包。
3。包的名称可以跟目录不同名,不过建议同名。
4。必须有且只有一个main函数,它是go语言的入口函数,也就是程序启动第1个要执行的函数。且main函数必须属于main包。也就是说go语言必须有一个main包。
所以必须知道怎么让一个文件属于一个包?语法如下,其中xxx为包名:packagexxx
例如包名为mainpackagemain
引入一个包的语法,其中xxx为包名:importxxx
例如引入fmt包importfmt
我在index。go文件中写入的内容如下:packagemainimportfmtfuncmain(){fmt。Print(helloworld)}
因为上一篇文章今天想学习一门编程语言中安装了coderunner插件,所以在编辑的index。go内容任意处鼠标右键,选择RunCode可运行代码,并可在输出面板OUTPUT处看到运行结果:
vscode中运行程序
OUTPUT输出结果处也会显示运行的命令gorun(学习go语言使用的第1个命令),其实跟使用命令行是等同效果(如下图),所以coderunner真的很方便。
gorun命令会编译源码,并且直接执行源码的main()函数,不会在当前目录留下可执行文件。
有用的插件
在编写index。go的时候vscode总提示几个go扩展的命令不可用(如下图),可以点击Install进行安装,但在安装前我需要弄明白这些插件都有什么作用:
安装go的一些包或插件时总失败,因为包或插件地址在国外,所以需要设置一下go的国内代理。这里可以先用goenv查看go的所有环境配置。其中需要设置的是GOPROXY环境变量。命令为:goenvwGOPROXY我是国内地址上网随便可搜到,directgohelpenv可以查看goenv的用法
1。goenvjson:环境变量以json格式输出。
2。goenvwXXXxxx:如上面设置代理,设置属性XXX使用自定义的值xxx代替安装时的默认值。
3。goenvuXXX:删除通过goenvw设置的值,还原回默认值。
我猜默认值和goenvw设置的值分两个文件,使用环境变量时,goenvw文件的值会覆盖默认值文件的值。goenvu只会删除goenvw文件的值,所以又会恢复默认值。【待验证】
1。goimports是什么?
goimports是Go官方提供的工具,可以自动对代码中的依赖包进行管理,如果有用到,就会自动import,对没有用到的包进行自动删除。并且goimports也具有gofmt的功能。
gofmt可以格式化go的代码。网上说vscode可以设置保存时自动格式化代码。但我在swithfrongofmttogoimports之前的操作都没有成功:
如果vscode没有提示安装goimports,也可以手动安装。打开命令行,直接输入安装命令:gogetv我是go官网地名xtoolscmdgoimports
因为修改了GOPROXY很快就安装成功,重启vscode,之前写的代码再保存一下,自动格式化了。
2。gopls是什么?
gopls可以实现代码自动完成,转到定义,查找所有引用等功能。它是LSP(全称LanguageServerProtocol,即语言服务器协议)的一个语言端(Server)实现,是针对Go语言的LSP实现。有兴趣可自行了解。
gopls的安装可以通过提示点击Install进行安装,也可以使用上面安装goimports的方式手动安装(安装命令:goinstallv我是go官网地名xtoolsgoplslatest),这里再学习一种新的vscode安装插件的安装方式。
(1)ctrlshiftP打开执行命令的输入框,输入go:install就可以看到Go:InstallUpdateTools(如图),选择它自动跳转后,可以看到go的工具列表。
图5
(2)选择gopls,点击OK进行安装
图6
(3)OUTPUT处会显示安装成功
3。gooutline是什么?
gooutline可以解析结构体tag标签里面的json信息。以后会学习到的,先安装再说。总结任何一个go文件必须属于一个包。go必须有一个main包。go必须有且只有一个main函数,且它属于main包,是go语言的入口函数。包的名称可以跟目录的名称不同名,建议同名,自己好找到文件。文件包名语法packagexxx,并且必须在文件除注释外第1行。引入包语法importxxx,以后还会学到1个Import引入多个的包的语法。goenv查看所有go的环境变量。goenvw设置环境变量。goenvu删除通过goenvw设置的环境变量,还原成安装时的默认值。要设置goenvwGOPROXY后才能顺利下载go包和工具。goimports可在保存文件时自动格式化,自动import,对没有用到的包进行自动删除。gopls实现代码自动完成,转到定义,查找所有引用等功能。gooutline可以解析结构体tag标签里面的json信息。
比惨更惨,大屏手机推荐330元到13199元任你选小屏手机用户总是在叫苦连天,但大屏手机用户才是真正的惨,关塔那摩的狱警看了都说不忍心。这年头,让人选大屏手机就已经是对日内瓦条约的践踏。更可怕的是,现在有能大能小且利润高……
心眼不好的人,这些特征藏不住,请远离!古人云:害人之心不可有,防人之心不可无。人与人之间的交往,贵在一个诚字。只要双方都付出一颗真诚之心,则这样的友谊与情感才是更为珍贵的。但是现实社会中,往往人心叵测,令人捉摸不透……
苹果新专利曝光,AirPods或可配触控屏来控制音乐播放关于苹果新款AirPods的消息最近有很多,不过大多都是空穴来风。最近美国专利商标局公布了一项苹果申请的专利,或许可以让我们窥探未来苹果AirPods可能会有怎样变化与新功能。……
这些安卓手机的实用功能,你知道几个?功能一:应用锁现在大家都很注重隐私。除了手机锁屏密码,Android还支持锁定单个App。即使在解锁状态下,不输入正确密码也无法打开App。【操作方法】:设置安全应……
Suma发布天阔终端,瞄准全场景应用3月30日,Suma终端春季旗舰新品发布会在昆山举办。会上,中科可控发布了面向全场景应用的Suma天阔系列终端产品,推出了旗舰级工作站、轻量级工作站、云终端、桌面一体机等产品。……
春天是风景,秋天变钱景来源:人民网安徽频道春风如贵客,一到便繁华。春天的砀山,花芒毕露,金色的油菜花、紫色的二月兰、粉嫩的桃花,目之所及,尽是花的海洋。当然,这其中最为人津津乐道的,还要……
广东揭幕战大胜深圳,曾繁日两双,徐杰全场最高18分北京时间10月16日晚,广东宏远男篮在领取完总冠军戒指后,立马对阵首个对手深圳男篮。这场比赛是易建联时隔一年多重返职业赛场,备受关注。开节之后,广东队在易建联的带领下慢慢……
香港现在有点急了,迫不及待想从内地游客身上赚钱,但没有人上当随着今年开放政策的实行,各个国家的经济都在向着利好发展,而中国首个经济高峰期就出现在了旅行方面,很多沉寂已久的旅客已经迫不及待的等在了机场中,他们去到的城市也是各不相同,其中在……
金庸群侠传那些废弃的场景,原来就是灵鹫宫独孤剑冢当年我们在玩《金庸群侠传》时就已经注意到了,游戏中有不少被删减的地方,甚至部分主线都给砍了。这也导致了游戏严重失衡:有的小说分分钟就能拿到,流程很短,不费吹灰之力;……
五一旅游爆火!最热目的地是随着第二批出境团队旅游业务的试点恢复,目前国内出境团队游目的地已增加到60个。记者近日了解到,目前五一假期出境游产品预订已经提前进入高峰。上午11点,在北京朝阳区三里屯一……
AMD新一代APU曝光大小核架构终于上了尽管面市之初带来一些兼容问题,但Intel显然是坚定地走在大小核混合架构的路上。AMD在主流平台尚未跟进,可似乎只是时间问题。在一份AMD的官方编程指南中,提到AM……
俄罗斯工程院外籍院士孙立宁机器人是智能制造与智慧生活的底层关3月31日,由中国电子信息产业发展研究院(赛迪研究院)主办的2023赛迪论坛在北京举行。俄罗斯工程院外籍院士、苏州大学机电工程学院院长孙立宁在先进制造分论坛演讲时表示,机器人是……