Go语言之路:一、万丈高楼平地起

导读:
“要欲善其事,必先利其器”

要想学习Go语言,那么首先就是需要准备一个语言的学习环境,本篇作为整套Go语言之路的开篇,主要介绍如何在一台机器上
准备一个完整的Go语言开发环境。

一、下载&安装

Go语言支持多种安装方式:安装包安装、代码安装;如果是Linux系操作系统,还可以通过包管理系统安装等等。
每种安装方式各有特点:

  • 安装包安装,省时省事,可以自行选择平台和版本安装
  • 代码安装,可以根据具体需求定制编译和安装;
  • 系统包管理系统安装,简单明了,但是很多时候安装的版本并不是最新的。

对于小白用户来说,其目的是为了快速搭建开发环境,因此推荐直接下载对应平台的安装包进行安装,省心省事。
不要一开始就让自己陷入各种安装问题当中。
考虑到本文只针对入门级用户,所以只简单的描述官网下载安装包的方式进行安装。

操作平台为Linux,具体的其他平台,可以参考官网安装指南go.dev/doc/install.
如果官网访问不了可以通过国内的Go语言中文网下载

1、下载:
#创建临时目录:
$ mkdir temp && cd temp
#下载匹配的安装包
$ wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz
2、删除老版本&安装新版本:
$ rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz
3、添加环境变量:
$ export PATH=$PATH:/usr/local/go/bin

如果想持久化的添加该环境变量,可以编辑当前用户下的.profile(有的系统平台是.bash_profile)文件。
这样每次该用户登录,就自动生效。

4、验证Go安装:
$ go version

如果安装成功,会输出当前版本信息:

go version go1.18.1 linux/amd64

如果没有符合预期出现对应的版本信息。根据系统的错误提示,检查以上步骤,看看哪里设置错误了即可。

二、创建HelloWorld项目

如果有C语言这些经验的同学,都会懂得开始的编程就是直接通过编辑器(或者IDE),敲代码了。当然在Go你也可以这样操作。
但是为了日后的工作行程一定的行为记忆良好习惯(其实也或者能显得你牛逼~~~hoho)。我们在这直接
用上Go的模块管理工具mod。具体这玩意是内里乾坤,后续我们专门学习讲解,在此只需要知道它是Go用来进行包依赖
管理的自动化工具即可。

抛开原理,直接操作(原理需要单独来详细说):

1、创建个文件,来进行代码管理:
$ mkdir -p HelloWorld && cd HelloWorld
2、执行go mod init生成一个mod文件:
$ go mod init example.com/hello

go mod init是初始化文件固定命令,而example.com/hello一般是后续进行版本管理的访问路径。比如,代码
将来打算放在github.com上,那么可以路径是github.com/hello

执行成功后,当前目录会出现一个名字为go.mod的文本文件。我们不妨打开看看它的内容:

module example/hello

go 1.18

第一行是模块名称,第二行是go的版本。

3、创建一个hello.go的源文件,输入以下内容,然后保存退出:
package main 

import "fmt" 

func main() {
    fmt.Println("Hello World!")
}

在此先不解释代码的内容,可以直接先照葫芦画瓢把内容输入到自己的源文件当中。

4、运行刚才生成的hello.go源文件:
$ go run hello.go

当然,你也可以直接输入go run .运行,这是自动寻找当前路径下,带main函数的文件,进行递归编译,最后执行。
执行命令后会看到屏幕打印出一行字符:

Hello, World!

到此为止,你已经搭建好Go环境,并且成功运行第一个HelloWorld程序了。So easy?是的,就是如此简单。

到此,你是否不禁疑问:刚才的mod文件有啥用途呢?直接写一个文件不就得了?

别急,我么继续走下去。

加入我不仅仅是输出屏幕,而是引用第三方的库,跟着调用他的函数呢?

5/添加点调味:

打开文件,增加两个行代码:import "rsc.io/quote"fmt.Pringln(quote.Go())
并且把之前的fmt.Println("Hello World!")删除。
最终结果如下:

package main

import "fmt"

import "rsc.io/quote"

func main() {
    fmt.Println(quote.Go())
}

在执行go run hello.go试试?

hello.go:5:8: no required module provides package rsc.io/quote; to add it:
        go get rsc.io/quote

出现这个错误提示,是因为我们刚才增加的代码引用了rsc.io/quote,但是本地开发环境中找不到该库。

如果是以前,我们可能要手工下载这个库,放在对应的路径,这C语言的开发者就很熟悉了。
但是对于Go,我们只需要利用好go mod 就能自动下载该库,并且能把其依赖也解决了 。
在命令行输入:go mod tidy试试!

go: finding module for package rsc.io/quote
example/hello imports
        rsc.io/quote: module rsc.io/quote: Get "https://proxy.golang.org/rsc.io/quote/@v/list": dial tcp 172.217.160.113:443: i/o timeout

结果等了半天,还是报错!!!

这又为什么呢?不是说自动化么?

其实啊,这是被墙了。我们的机器因为网络环境,无法直接访问proxy.golang.org。那怎么办?有没办法解决。
答案,自然是有!
我们只需要修改下go env环境的goproxy值即可。换成国内的7牛云的镜像:

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

把goproxy值修改为https://goproxy.cn,direct。现在试试执行go mod tidy

go: finding module for package rsc.io/quote
go: downloading rsc.io/quote v1.5.2
go: found rsc.io/quote in rsc.io/quote v1.5.2
go: downloading rsc.io/sampler v1.3.0
go: downloading golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c

OK,成功了,确实的库,已经自动下载,并且把它的依赖一并解决了。

此时我们再打开go.mod看看内容出现了什么变化?

module example/hello
 
go 1.18

require rsc.io/quote v1.5.2

require (
     golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c // indirect
     rsc.io/sampler v1.3.0 // indirect
 )

相对之前的内容,这里多了 两个require。(本篇先不展开描述这内容)。
以此同时,在go.mod同等目录下,出现了个新文件go.sum。这是go自动维护的一个加强安全,模块依赖校验等功能的文件。
一般我们变成的过程中,极少和它打交道。在此我们只需要知道它的存在接口,暂时先放下不管你它。

版本依赖下载完毕了,这时候我们再试下运行刚才的hello.go程序。
go run hello.go

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

OK ,程序正常执行了!

三、总结:

本文属于小白入门级的操作实践,简单描述了如何在Linux环境下安装Go开发环境,并且编写第一个HelloWorld
程序验证安装的环境,此外还简单的窥视了下Go强大的模块管理go mod的作用,以及使用go mod的情况下,网络不通
如何更改新的goproxy源。下一篇我们尝试总结go的命令行工具。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是您需要的HTML代码: ```html <!DOCTYPE html> <html> <head> <title>汉字数字查询</title> </head> <body> <h1>汉字数字查询</h1> <p>请输入数字查找汉字,或者输入汉字查找数字:</p> <input type="text" id="input" placeholder="请输入数字或汉字"><br> <button onclick="search()">查询</button> <br><br> <table> <tr> <th>汉字</th> <th>数字</th> </tr> <tr> <td>一</td> <td>0001</td> </tr> <tr> <td>丁</td> <td>0002</td> </tr> <tr> <td>七</td> <td>0003</td> </tr> <tr> <td>丈</td> <td>0004</td> </tr> <tr> <td>三</td> <td>0005</td> </tr> <tr> <td>上</td> <td>0006</td> </tr> <tr> <td>下</td> <td>0007</td> </tr> <tr> <td>不</td> <td>0008</td> </tr> <tr> <td>丐</td> <td>0009</td> </tr> <tr> <td>丑</td> <td>0010</td> </tr> <tr> <td>且</td> <td>0011</td> </tr> <tr> <td>丕</td> <td>0012</td> </tr> <tr> <td>世</td> <td>0013</td> </tr> <tr> <td>丙</td> <td>0014</td> </tr> <tr> <td>丞</td> <td>0015</td> </tr> <tr> <td>丢</td> <td>0016</td> </tr> <tr> <td>丨</td> <td>0019</td> </tr> <tr> <td>个</td> <td>0020</td> </tr> <tr> <td>丫</td> <td>0021</td> </tr> </table> <script> function search() { var input = document.getElementById("input").value; var rows = document.getElementsByTagName("tr"); for (var i = 1; i < rows.length; i++) { var cells = rows[i].getElementsByTagName("td"); var hanzi = cells[0].innerHTML; var shuzi = cells[1].innerHTML; if (hanzi == input || shuzi == input) { alert("汉字:" + hanzi + ",数字:" + shuzi); return; } } alert("未找到匹配项!"); } </script> </body> </html> ``` 通过这段代码,用户可以在页面上输入数字或汉字,然后点击“查询”按钮来查找匹配的汉字或数字。如果找到匹配项,则会弹出一个提示框显示汉字和数字;如果未找到匹配项,则会弹出另外一个提示框提示用户未找到匹配项。该页面还包含一个表格,其中包含了所有的汉字和数字对应关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值