go语言学习—启动go

news/2024/11/8 16:54:13/

一、说明

本文来自go官网的英文教程,我反正也是学,就翻译过来看了,顺便记录一下,中间可能穿插点小心得,原文来自go官网
在本教程中,我会简要给你介绍下go语言编程。通过本文,你能学到

  • 安装go
  • 写一个简单的“hello,word”代码
  • 使用go命令运行代码
  • 使用Go语言包发现工具去寻找你能使用在代码中的包
  • 调用外部模块的函数

二、准备工作

  1. 需要一些编程经验。虽然这里的代码非常简洁,但是它能帮助我们了解一些函数相关知识。
  2. 一个能够编写代码的工具。任何你拥有的文本编辑器都可以。大多数的文本编辑器都能很好的支持Go语言的开发。其中最受欢迎的有VSCode(免费),GoLand(付费)和Vim(免费)。
  3. 一个cmd命令终端。Go语言的运行可以使用Linux或者Mac的终端命令行,或者Windows的PowerShell或cmd。

下载Go

点击一键下载安装

三、编写代码

编写一段hello,word代码。

  1. 打开命令行提示,然后cd到你的主目录
    在Linux或者Mac中:
    cd
    在windows中:
    cd %HOMEPATH%
  2. 为你的Go源码创建hello文件夹
    例如,我们使用一下命令创建:
    mkdir hello
    cd hello
  3. 为你的代码开启依赖追踪
    当你的代码中导入了其他模块的包时,你可以通过你代码自己的模块来管理这些依赖。这些模块由go.mod文件定义,go.md文件主要用于追踪那些提供包的模块。go.md文件与你的代码放在一起,被包含在你的源码库中。(个人理解:类似java的Maven、python的conda、js的npm一样的东西)
    我们通过运行go mod init命令,然后给一个你接下来要编写的模块的名字来创建go.mod文件,从而为代码开启依赖追踪功能。这个名字为模块的路径。
    在实际的开发中,模块路径通常为你源码存放的地方。例如,如果模块路径为“github.com/mymodule”。如果你打算开源你的模块给别人用,模块路径必须是一个Go工具包能够下载你模块的位置。
    如果想看更多关于模块命名方面的东西,可以看管理依赖
    就本教程而言,就使用example/hello就行了。
		$ go mod init example/hellogo: creating new go.mod: module example/hello
  1. 在你的文本编辑器中,创建一个hello.go的文件来编写代码
  2. 粘贴和保存一下代码在你的文件中
package mainimport "fmt"func main() {fmt.Println("Hello, World!")
}
在本代码中,你进行了以下操作:
  • 声明了main包(包是一种对函数进行分组的方式,同时它由一个文件夹下的所有文件组成)
  • 导入了一个常用的fmt包,这个包包含了格式化文本的一些函数,如打印字符到控制台。这个包是一个你下载Go之后就拥有的标准包之一。
  • 实现了main函数来打印信息到控制台。当你运行这个包的时候,main函数会默认执行。
  1. 运行你的代码来观察结果
$ go run .
Hello, World!
go run命令是许多go语言完成任务的命令之一。使用一下命令可以获得命令列表:go help

四、访问外部包的代码

当你需要实现某些他人可能已经实现了的功能时,你可以去寻找那些你可以用的代码中的函数的包。

1.使用外部模块的打印信息会更有趣一点。(这里应该是作者想搞个外部的print函数做样例了)

  1. 访问pkg.go.dev然后搜索“quote”包。
  2. 在搜索结果中找到和点击 rsc.io/quote包(如果你看到了rsc.io/quote/v3,忽略它)
  3. 在文档中通过索引,找到可以调用的函数列表。你将会在之后用到它们。
  4. 在文章的顶部,请注意quote 包被包含在rsc.io/quote模块内。
    你可以使用网站:pkg.go.dev去找那些你想用在你代码中的公共模块的包。像rsc.io/quote 等包都被发布在模块中,从而使得其他人也可以调用它。模块是通过时间来提供新版本的,你可以通过更新你的代码来提升版本。

2.在你的Go代码中引入 rsc.io/quote包,并且添加函数调用

package mainimport "fmt"import "rsc.io/quote"func main() {fmt.Println(quote.Go())
}

3.添加新的模块需求和总结(类似于python的requirements.txt文件吧)

Go将会把quoto模块作为依赖添加,以及将go.sum文件作为验证模块。更多信息可以查看验证模块

go mod tidy
go: finding module for package rsc.io/quote
go: found rsc.io/quote in rsc.io/quote v1.5.2

注意:如果出现连不上,下不下来的情况,十有八九就是被墙了,直接换源。

go env -w GOPROXY=https://goproxy.io,direct

4.运行你的代码来观察你调用的函数所打印的信息

go run .
Don't communicate by sharing memory, share memory by communicating.

这儿你的代码调用了Go的函数,打印了关于通信的巧妙信息。(原文就是这么写的,emmm,,可能是啥子俗语吧)
当你运行go mod tidy,他会定位和下载你所导入的rsc.io/quote模块。默认情况他会下载最后的版本–v1.5.2

五、更多

通过这篇快速介绍,你了解到了Go语言的下载,学到了一些基础知识。想要通过其他教程来写更多的代码,请查看创建Go模块。


http://www.ppmy.cn/news/97809.html

相关文章

Copilot插件:时时陪伴的AI助手 | Obsidian实践

这段时间,有点儿沉迷于AIGC实践不可自拔,也因此懈怠了Obsidian实践。回过头来猛然发觉,其实Obsidian也“上架”了很多与ChatGPT有关的插件。 赶紧体验下,看看有没有什么,是一下子就能用起来的。不得不说,自…

Java中数据库加密的方式

前言 在现今互联网时代,数据安全已经成为了我们必须要面对的重要课题。对于Java开发人员而言,在实现数据库的加密时需要考虑到很多方面,比如性能、安全性、成本等等。在本篇博客中,我们将会介绍Java中常用的几种数据库加密方式&a…

面试题 01.02. 判定是否互为字符重排

判定是否互为字符重排 给定两个由小写字母组成的字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。 示例 1: 输入: s1 “abc”, s2 “bca” 输出: true 示例 2: 输入:…

设计模式之状态模式

状态模式的定义是:当一个对象内在状态改变时允许其改变行为,这个对象看起来像是改变了自身所属的类。 该模式适合于对象具有有限的状态,并且在状态之间相互切换。 例如使用如下的条件分支语句也是属于状态的切换: switch (actio…

C/C++开发,libiec61850库学习及运用

目录 一、libiec61850库下载编译 1.1 下载 1.2 linux编译: 1.3 win编译 二、案例编译测试 2.1 CMakeLists.txt调整(server_example_goose) 2.2 模型static_model.h/static_model.cpp生成 2.3 案例编译(server_goose) 2.4 客户端编译 2.5 运行测试 一、libiec61850…

logstash 采集应用日志切割问题

1.logstash [oswatch@rce1 conf]$ cat test.conf input { file { path=>["/tmp/test/test.log*"] } } output { stdout { codec=>rubydebug{} } } 2.python脚本: [oswatch@rce1 conf]$ cat t1.py #!/usr/bin/python # -*- coding: UTF-…

算法|9.从暴力递归到动态规划2

9.算法|从暴力递归到动态规划2 1.数字字符串转英文字符串 题意:规定1和A对应、2和B对应、3和C对应…26和Z对应,那么一个数字字符串比如"111”就可以转化为:“AAA”、“KA"和"AK” 给定一个只有数字字符组成的字符串str,返回…

采购申请审批测试

采购申请审批的配置并不难,但是总会有原因导致业务无审批策略,而且这个配置也比较脆弱,有时同步也会出现问题,小编利用这篇操作记录下测试结果。 1、项目类别的审批策略分类 下图是审批策略分类-项目类别不给值,测试…