当前位置: 首页 > news >正文

Go语言学习笔记-创建一个Go项目

目录

一、创建一个项目

二、引入其他包

三、代码组织方式

1、创建函数

2、函数文件

3、不同目录的函数


        有感于十天半月不用Go语言,连项目都不会创建了,所以也写一篇创建Go项目的blog!

        使用Go项目的好处:

        1、对于编译结果在各个平台可以直接运行,比如在windows平台直接把项目打包成exe文件。

        2、编译速度快。有的项目之所以喜欢采用跨平台语言(java),一个原因就是跨平台语言不用多次编译,一次编译,跨平台运行。但是对于那些容易编译的项目来说,用户直接拿来运行,反而更加方便。至于如何打包成对应平台的应用,那是开发者的事情。

        3、Go是一门热门语言。有学习价值。

一、创建一个项目

1、创建一个目录。比如:mkdir goproject

2、进入goproject目录

3、运行命令:go mod init yy.cn/main
这些这个命令会生成一个go.mod的文件。

4、创建一个go文件:main.go
输入:

package mainfunc main() {println("hi")
}

5、运行命令:go run .
成功打印:hi

二、引入其他包

1、在网络上找到对应的包。比如:

go get -u github.com/gocolly/colly/...

执行这个命令,go.mod文件会多出require一些东西。

可以使用go mod tidy整理go.mod的依赖,清理掉一些没有使用的依赖。

2、编写代码:

package mainimport ("fmt""github.com/gocolly/colly"
)func main() {c := colly.NewCollector()// Find and visit all linksc.OnHTML("a[href]", func(e *colly.HTMLElement) {e.Request.Visit(e.Attr("href"))})c.OnRequest(func(r *colly.Request) {fmt.Println("Visiting", r.URL)})c.Visit("http://www.baidu.com/")
}

3、思考:

代码的例子如何来?

答:从官方文档,博客,书本等等地方来。

如何编写符合自己业务要求的代码?

答:查找官方文档等等方式,按照业务逻辑改造代码。

如何改进代码变成适合自己的形状?

答:按照功能,或者某种体系来组织代码。尽量不要按照特定业务逻辑来抽象代码,标准是如果一段时间后,自己已经不写这种业务后,再来看代码,依然能快速知道代码的抽象逻辑、原则。

三、代码组织方式

        如果把代码全都挤在一坨,肯定不好,所以需要抽象成函数。而一大坨函数放在一起,同样难以管理,所以需要把和一个主题相关的一系列函数组织在一个单独的文件中。而如果所有的函数文件全在一个目录下面,也会让人眼花缭乱,这时候就可以把不同函数文件放在一个目录树下的其他目录里面。

1、创建函数

        一个简单函数:

func fun1(){println("hi")
}

2、函数文件

        在同一目录下,新建一个.go文件,然后在文件中编写函数。在同一个目录下的go文件即可互相引用函数。

3、创建子项目

(这个操作本身比较简单,但是VScode在.go文件保存的时候,总是会清除掉爆红的import语句。这个麻烦问题暂时没有好办法,一个简单的办法是模仿学习网站提供的示例编写import。Call your code from another module - The Go Programming Language)

        也可以叫子项目。如果想要引用这类函数,需要做一些配置。要点是,在.go文件中编写import语句后,使用go mod tidy生成require指令。不要自己写require指令。

1)先创建一个子目录(项目)。比如:greetings

2)运行:go mod init example.com/greetings

生成go.mod文件。

3)新增greetings.go文件:

package greetingsimport "fmt"// Hello returns a greeting for the named person.
func Hello(name string) string {// Return a greeting that embeds the name in a message.message := fmt.Sprintf("Hi, %v. Welcome!", name)return message
}

4)在想要引入greetings的项目的.go文件中,使用import。

import example.com/greetings

package mainimport ("fmt""example.com/greetings"
)func main() {// Get a greeting message and print it.message := greetings.Hello("Gladys")fmt.Println(message)
}

5)运行:go mod tidy

会打印类似这个:go: found example.com/greetings in example.com/greetings v0.0.0-00010101000000-000000000000

即在go.mod文件中生成require命令。

可以把版本号改成更容易理解的v1.1.1这种。

6)go run ./

打印:Hi, Gladys. Welcome!

新增子项目成功。

备注:

检查是否替换成功:go mod graph | grep yy.cn/mat

要点是,在.go文件中编写import语句后,使用go mod tidy生成require指令。

四、其他提升方向

1、了解更多热门、使用的第三方库。

2、编写代码进行实战。

3、研究代码的抽象逻辑。

http://www.xdnf.cn/news/878437.html

相关文章:

  • 瑞典Sana Agents全国部署:AI驱动的数字化转型革命
  • 适用于vue3的大屏数据展示组件库DataV(踩坑版)
  • Jenkins | Jenkins构建成功服务进程关闭问题
  • OD 算法题 B卷【BOSS的收入】
  • Docker Compose 备忘
  • 通过BUG(prvIdleTask、pxTasksWaitingTerminatio不断跳转问题)了解空闲函数(prvIdleTask)和TCB
  • 【C++ Qt】窗口(Qt窗口框架、菜单栏QMenuBar)
  • 高效集成AI能力:使用开放API打造问答系统,不用训练模型,也能做出懂知识的AI
  • Spring MVC 之 异常处理
  • 《一生一芯》数字实验六:实现随机数发生器
  • 联邦学习架构深度分析:支持多家医院协作训练AI模型方案分析
  • Python-多线程
  • 得力Deli GE330W打印机信息
  • 【HW系列】—内网被渗透的解决方案
  • 我也不知道
  • 在C++中,头文件(.h或.hpp)的标准写法
  • 高效使用AI大模型:测试工程师提示词编写框架
  • 小白初学SpringBoot记录
  • LeetCode 热题 100 739. 每日温度
  • 电子电路:空气也会形成电容吗?
  • 修复与升级suse linux
  • 行为型-迭代器模式
  • 检索增强生成(Retrieval-Augmented Generation,RAG)
  • ShardingSphere-JDBC 与 Sharding-JDBC 的对比与区别
  • 【Unity】R3 CSharp 响应式编程 - 使用篇(二)
  • BugKu Web渗透之bp
  • 6个月Python学习计划 Day 14 - 异常处理基础( 补充学习)
  • 制造业数智化:R²AIN SUITE 如何打通提效闭环
  • 苹果企业签名撤销
  • 滑动智能降级:Glide优化加载性能的黑科技