我的Go+语言初体验——基于CentOS系统搭建Go+语言环境详细教程

简介: 我的Go+语言初体验——基于CentOS系统搭建Go+语言环境详细教程

1、Go+简介💬

🔍 Go+ 是七牛云 CEO 许式伟发明的一门可用于工程、STEM 教育和数据科学的编程语言,于 2020 年 7 月正式发布,2021 年 10 月推出 1.0 版本。


2、Go+特点💎

📣 Go+ Slogan:“The Go+ language for engineering, STEM education, and data science”

🔔 Go+ 是目前第一个顺应“三位一体”发展潮流的编程语言,同时兼顾工程、STEM 教育、数据科学三大领域

🏆 for engineering:致力于让工程师可以使用简洁、容易掌握的语言去工作,这在纷繁复杂的工程技术领域是非常重要的进化;

🏆🥇 for STEM education:Go+ 简单易学,非常适合作为青少年学习编程的入门语言,且能在未来的工作中的延续使用,无需切换语言;

🏆 for data science:目标是让工程师和数据科学家可以用相同的语言去对话,这在以数据驱动创新的未来尤为重要。


3、Go+优势🏆

Go+ 有三大优势🌈:更简单更强大兼容性强。其中:

📕语法更加简单、优雅。在继承 Go 语言特性最小化的优势和工程理念的基础上,Go+ 更接近自然语言,有理数更贴近数学的表达方式;

📗低代码化,去复杂性。入门门槛较低,入门使用时屏蔽了工程化的复杂性;

📘性能强大。强化每行代码的能力,完成功能所需的代码量更少;


三、🔑Go+安装与配置

🎈 目前,建议通过源码安装 Go+。安装下载命令如下💨🕞

git clone https://github.com/goplus/gop.git
cd gop
# On mac/linux run:
./all.bash
# On Windows run:
all.bat
💡:实际上, all.bash 和 all.bat 内部都会执行 go run cmd/install.go


(1)下载并上传二进制包📘

下载二进制包:go1.17.4.linux-amd64.tar.gz

这里采用源码安装方法

0d7400436ce84c3cace59af41948b2af.png🛒还有其他版本的二进制包可供选择下载,满足不同环境使用。

aa0cb623d1334c12a0418333dd18dfcc.png💖将下载的go1.17.4.linux-amd64.tar.gz压缩包上传至CentOS服务器中

26455d03eb5d4843bf175ebb12c83afb.png

(2)将二进制包解压至 /usr/local目录📙

执行下列命令

tar -C /usr/local -zxvf go1.17.4.linux-amd64.tar.gz

(3)将 /usr/local/go/bin 目录添加至PATH环境变量📕

export PATH=$PATH:/usr/local/go/bin

(4)验证Go环境是否配置成功📘

执行go version命令

[root@centos ~]# go version
go version go1.17.4 linux/amd64

(5)创建go程序测试Go编程环境📗

[root@centos ~]# vim hello.go 
[root@centos ~]# cat hello.go 
package main
import "fmt"
func main() {
   fmt.Println("Hello, World!")
}
[root@centos ~]# go run hello.go 
Hello, World!
[root@centos ~]# ll
total 131660
-rw-------.  1 root root      1531 Nov 28 17:50 anaconda-ks.cfg
drwxr-xr-x   3 root root        17 Dec  5 19:11 go
-rw-r--r--   1 root root 134807371 Dec  5 19:04 go1.17.4.linux-amd64.tar.gz
drwxr-xr-x  17 root root      4096 Dec  5 19:27 gop
-rw-r--r--   1 root root        74 Dec  5 20:16 hello.go
[root@centos ~]# 

正式安装🔊

2、🌈 拷贝 Git 仓库到本地

若出现以下报错信息❌❗

[root@ecs-kunpeng GO+]# git clone https://github.com/goplus/gop.git
-bash: git: command not found

则通过下列命令安装git即🉑

# ✅ 通过yum查看提供的Git组件版本
[root@ecs-kunpeng GO+]# yum provides git
git-2.27.0-1.el8.aarch64 : Fast Version Control System
Repo        : AppStream
Matched from:
Provide    : git = 2.27.0-1.el8
# ✅ 通过yum源安装Git组件
[root@ecs-kunpeng GO+]# yum install -y git-2.27.0-1.el8.aarch64
CentOS-8 - AppStream                                                                     54 kB/s | 4.3 kB     00:00
CentOS-8 - Base                                                                          43 kB/s | 3.9 kB     00:00
CentOS-8 - Extras                                                                        19 kB/s | 1.5 kB     00:00
Extra Packages for Enterprise Linux Modular 8 - aarch64                                  34 kB/s | 3.0 kB     00:00
Extra Packages for Enterprise Linux 8 - aarch64                                          51 kB/s | 4.7 kB     00:00
Dependencies resolved.
========================================================================================================================
 Package                        Architecture    Version                                         Repository         Size
========================================================================================================================
Installing:
 git                            aarch64         2.27.0-1.el8                                    AppStream         164 k
Installing dependencies:
 git-core                       aarch64         2.27.0-1.el8                                    AppStream         5.6 M
 git-core-doc                   noarch          2.27.0-1.el8                                    AppStream         2.5 M
 perl-Digest                    noarch          1.17-395.el8                                    AppStream          27 k
 perl-Digest-MD5                aarch64         2.55-396.el8                                    AppStream          37 k
......中间安装步骤省略......
  perl-parent-1:0.237-1.el8.noarch
  perl-podlators-4.11-1.el8.noarch
  perl-threads-1:2.21-2.el8.aarch64
  perl-threads-shared-1.58-2.el8.aarch64
Complete!
[root@centos]#

🔔 通过源码安装 Go+

[root@centos]# git clone https://github.com/goplus/gop.git
ne https://github.com/goplus/gop.gitCloning into 'gop'...
remote: Enumerating objects: 16502, done.
remote: Counting objects: 100% (4784/4784), done.
remote: Compressing objects: 100% (1519/1519), done.
remote: Total 16502 (delta 3078), reused 4567 (delta 2936), pack-reused 11718
Receiving objects: 100% (16502/16502), 20.62 MiB | 147.00 KiB/s, done.
Resolving deltas: 100% (9600/9600), done.

🔍 查看获取的Git服务组件

[root@centos]# ll
total 4
drwxr-xr-x 15 root root 4096 Dec  2 23:43 gop
[root@centos]# cd gop/
[root@ecentos]# ll
total 120
-rwxr-xr-x 1 root root   698 Dec  2 23:43 all.bash
-rw-r--r-- 1 root root    41 Dec  2 23:43 all.bat
drwxr-xr-x 4 root root  4096 Dec  2 23:43 ast
drwxr-xr-x 2 root root  4096 Dec  2 23:43 builtin
drwxr-xr-x 3 root root  4096 Dec  2 23:43 cl
drwxr-xr-x 8 root root  4096 Dec  2 23:43 cmd
-rw-r--r-- 1 root root   654 Dec  2 23:43 dummy.go
drwxr-xr-x 2 root root  4096 Dec  2 23:43 env
drwxr-xr-x 2 root root  4096 Dec  2 23:43 format
-rw-r--r-- 1 root root   161 Dec  2 23:43 go.mod
-rw-r--r-- 1 root root  3105 Dec  2 23:43 go.sum
-rw-r--r-- 1 root root 11353 Dec  2 23:43 LICENSE
-rwxr-xr-x 1 root root   698 Dec  2 23:43 make.bash
-rw-r--r-- 1 root root    41 Dec  2 23:43 make.bat
-rw-r--r-- 1 root root  1769 Dec  2 23:43 Makefile
drwxr-xr-x 4 root root  4096 Dec  2 23:43 parser
drwxr-xr-x 3 root root  4096 Dec  2 23:43 printer
-rw-r--r-- 1 root root 13702 Dec  2 23:43 README.md
-rw-r--r-- 1 root root 14088 Dec  2 23:43 README_zh.md
drwxr-xr-x 2 root root  4096 Dec  2 23:43 scanner
drwxr-xr-x 2 root root  4096 Dec  2 23:43 token
drwxr-xr-x 5 root root  4096 Dec  2 23:43 x
[root@ecs-kunpeng gop]#

3、📚 执行./all.bash命令安装Go+

若出现以下报错信息❌❗

[root@centos gop]# ./all.bash
+ go run cmd/make.go --install --autoproxy
go: finding github.com/qiniu/x v1.11.5
go: finding github.com/goplus/gox v1.8.0
go: golang.org/x/tools@v0.1.7: unrecognized import path "golang.org/x/tools" (https fetch: Get https://golang.org/x/tools?go-get=1: dial
 tcp 142.251.42.241:443: i/o timeout)
go: golang.org/x/mod@v0.5.1: unrecognized import path "golang.org/x/mod" (https fetch: Get https://golang.org/x/mod?go-get=1: dial tcp 1
42.251.42.241:443: i/o timeout)
go: github.com/goplus/gox@v1.8.0: unknown revision v1.8.0
go: github.com/qiniu/x@v1.11.5: unknown revision v1.11.5
go: error loading module requirements

则先配置 GOPROXY 环境变量,或者可以直接挂梯子访问,再安装。

参考链接🔗:https://goproxy.io/zh/

[root@centos gop]# ./all.bash 
+ go run cmd/make.go --install --autoproxy
Installing Go+ tools...
go: downloading github.com/goplus/gox v1.8.0
go: downloading github.com/qiniu/x v1.11.5
go: downloading golang.org/x/mod v0.5.1
go: downloading golang.org/x/tools v0.1.7
go: downloading golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
go: downloading golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e
github.com/goplus/gop/token
github.com/goplus/gop/scanner
github.com/goplus/gop/ast
github.com/goplus/gop/env
github.com/qiniu/x/log
github.com/goplus/gop/parser
github.com/goplus/gop/x/mod/internal/lazyregexp
golang.org/x/mod/internal/lazyregexp
golang.org/x/mod/semver
golang.org/x/xerrors/internal
golang.org/x/xerrors
golang.org/x/mod/module
github.com/goplus/gop/x/mod/modfile
github.com/goplus/gox/internal
github.com/goplus/gox/internal/go/printer
github.com/goplus/gox/internal/go/format
golang.org/x/mod/modfile
golang.org/x/sys/execabs
golang.org/x/tools/internal/typeparams
golang.org/x/tools/go/internal/gcimporter
golang.org/x/tools/go/gcexportdata
golang.org/x/tools/internal/event/label
golang.org/x/tools/internal/event/keys
golang.org/x/tools/internal/event/core
golang.org/x/tools/internal/event
golang.org/x/tools/internal/gocommand
golang.org/x/tools/go/internal/packagesdriver
golang.org/x/tools/internal/packagesinternal
golang.org/x/tools/internal/typesinternal
golang.org/x/tools/go/packages
golang.org/x/tools/go/ast/astutil
golang.org/x/tools/go/types/typeutil
github.com/goplus/gox
github.com/goplus/gop/cl
github.com/goplus/gop/cmd/gengo
github.com/goplus/gop/cmd/internal/base
github.com/goplus/gop/cmd/internal/search
github.com/goplus/gop/x/mod/modfetch
github.com/goplus/gop/cmd/internal/modload
github.com/goplus/gop/cmd/internal/build
github.com/goplus/gop/cmd/internal/clean
github.com/goplus/gop/cmd/internal/env
github.com/goplus/gop/cmd/internal/gengo
github.com/goplus/gop/printer
github.com/goplus/gop/format
github.com/goplus/gop/x/format
github.com/goplus/gop/cmd/internal/gopfmt
github.com/goplus/gop/cmd/internal/help
github.com/goplus/gop/cmd/internal/install
github.com/goplus/gop/cmd/internal/mod
github.com/goplus/gop/x/gopmod
github.com/goplus/gop/cmd/internal/run
github.com/goplus/gop/cmd/internal/test
github.com/goplus/gop/cmd/internal/version
github.com/goplus/gop/cmd/gop
github.com/goplus/gop/cmd/gopfmt
github.com/goplus/gop/cmd/goprun
github.com/goplus/gop/cmd/goptestgo
Go+ tools installed successfully!
NEXT STEP:
We just installed Go+ into the directory:  /root/gop/bin
To setup a better Go+ development environment,
we recommend you add the above install directory into your PATH environment variable.
[root@centos gop]# 

当提示Go+ tools installed successfully!时,说明Go+安装完成。 

ab0319407004442aa2497d46730cc6a6.png

若出现以下报错信息❌❗

[root@centos bin]# ./gop run hello.go
[FATAL] /root/gop/cmd/internal/run/mod.go:58: exec: "go": executable file not found in $PATH
[root@centos bin]#

4、📍 验证Go+环境是否安装成功

进入/root/gop/bin/目录下,查看配置文件

执行./gop version命令,查看版本信息

[root@centos ~]# cd /root/gop/bin/
[root@centos bin]# ll
total 22172
-rwxr-xr-x 1 root root 9602677 Dec  5 19:12 gop
-rwxr-xr-x 1 root root 2832697 Dec  5 19:12 gopfmt
-rwxr-xr-x 1 root root 7840399 Dec  5 19:12 goprun
-rwxr-xr-x 1 root root 2412593 Dec  5 19:12 goptestgo
-rw-r--r-- 1 root root      73 Dec  5 19:26 hello.go
[root@centos bin]# 
[root@centos bin]# ./gop version
gop v1.0.32-61-g15116b6 linux/amd64

5、✅ 创建go+程序测试Go+编程环境

[root@centos bin]# pwd
/root/gop/bin
[root@centos bin]# vim hello.go 
[root@centos bin]# cat hello.go 
package main
import "fmt"
func main() {
   fmt.Println("Hello World!\n")
   fmt.Println("My name is xybDIY.")
}
[root@centos bin]# ./gop run hello.go 
Hello World!
My name is xybDIY.
[root@centos bin]# 

四、🎨总结

🎈🎈本文是在Linux系统环境下(基于CentOS系统进行操作)完成Go+环境搭建和实现程序代码运行的,相对来说操作过程比较简单,执行./all.bash,即可完成安装,不过在此之前需要完成好Go环境的安装。 🏆🏆

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
18
分享
相关文章
监控局域网其他电脑:Go 语言迪杰斯特拉算法的高效应用
在信息化时代,监控局域网成为网络管理与安全防护的关键需求。本文探讨了迪杰斯特拉(Dijkstra)算法在监控局域网中的应用,通过计算最短路径优化数据传输和故障检测。文中提供了使用Go语言实现的代码例程,展示了如何高效地进行网络监控,确保局域网的稳定运行和数据安全。迪杰斯特拉算法能减少传输延迟和带宽消耗,及时发现并处理网络故障,适用于复杂网络环境下的管理和维护。
揭秘 Go 语言中空结构体的强大用法
Go 语言中的空结构体 `struct{}` 不包含任何字段,不占用内存空间。它在实际编程中有多种典型用法:1) 结合 map 实现集合(set)类型;2) 与 channel 搭配用于信号通知;3) 申请超大容量的 Slice 和 Array 以节省内存;4) 作为接口实现时明确表示不关注值。此外,需要注意的是,空结构体作为字段时可能会因内存对齐原因占用额外空间。建议将空结构体放在外层结构体的第一个字段以优化内存使用。
企业监控软件中 Go 语言哈希表算法的应用研究与分析
在数字化时代,企业监控软件对企业的稳定运营至关重要。哈希表(散列表)作为高效的数据结构,广泛应用于企业监控中,如设备状态管理、数据分类和缓存机制。Go 语言中的 map 实现了哈希表,能快速处理海量监控数据,确保实时准确反映设备状态,提升系统性能,助力企业实现智能化管理。
38 3
Go 语言中的 Sync.Map 详解:并发安全的 Map 实现
`sync.Map` 是 Go 语言中用于并发安全操作的 Map 实现,适用于读多写少的场景。它通过两个底层 Map(`read` 和 `dirty`)实现读写分离,提供高效的读性能。主要方法包括 `Store`、`Load`、`Delete` 等。在大量写入时性能可能下降,需谨慎选择使用场景。
阿里双十一背后的Go语言实践:百万QPS网关的设计与实现
解析阿里核心网关如何利用Go协程池、RingBuffer、零拷贝技术支撑亿级流量。 重点分享: ① 如何用gRPC拦截器实现熔断限流; ② Sync.Map在高并发读写中的取舍。
|
2月前
|
Go 语言入门指南:切片
Golang中的切片(Slice)是基于数组的动态序列,支持变长操作。它由指针、长度和容量三部分组成,底层引用一个连续的数组片段。切片提供灵活的增减元素功能,语法形式为`[]T`,其中T为元素类型。相比固定长度的数组,切片更常用,允许动态调整大小,并且多个切片可以共享同一底层数组。通过内置的`make`函数可创建指定长度和容量的切片。需要注意的是,切片不能直接比较,只能与`nil`比较,且空切片的长度为0。
Go 语言入门指南:切片
|
2月前
|
公司局域网管理系统里的 Go 语言 Bloom Filter 算法,太值得深挖了
本文探讨了如何利用 Go 语言中的 Bloom Filter 算法提升公司局域网管理系统的性能。Bloom Filter 是一种高效的空间节省型数据结构,适用于快速判断元素是否存在于集合中。文中通过具体代码示例展示了如何在 Go 中实现 Bloom Filter,并应用于局域网的 IP 访问控制,显著提高系统响应速度和安全性。随着网络规模扩大和技术进步,持续优化算法和结合其他安全技术将是企业维持网络竞争力的关键。
53 2
公司局域网管理系统里的 Go 语言 Bloom Filter 算法,太值得深挖了
eino — 基于go语言的大模型应用开发框架(二)
本文介绍了如何使用Eino框架实现一个基本的LLM(大语言模型)应用。Eino中的`ChatModel`接口提供了与不同大模型服务(如OpenAI、Ollama等)交互的统一方式,支持生成完整响应、流式响应和绑定工具等功能。`Generate`方法用于生成完整的模型响应,`Stream`方法以流式方式返回结果,`BindTools`方法为模型绑定工具。此外,还介绍了通过`Option`模式配置模型参数及模板功能,支持基于前端和用户自定义的角色及Prompt。目前主要聚焦于`ChatModel`的`Generate`方法,后续将继续深入学习。
353 7
|
2月前
|
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
92 20
eino — 基于go语言的大模型应用开发框架(一)
Eino 是一个受开源社区优秀LLM应用开发框架(如LangChain和LlamaIndex)启发的Go语言框架,强调简洁性、可扩展性和可靠性。它提供了易于复用的组件、强大的编排框架、简洁明了的API、最佳实践集合及实用的DevOps工具,支持快速构建和部署LLM应用。Eino不仅兼容多种模型库(如OpenAI、Ollama、Ark),还提供详细的官方文档和活跃的社区支持,便于开发者上手使用。
308 8
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等