我的Go+语言初体验——Go+简单应用—选择排序

Muti-Agent 社区初级贡献者
Linux领域优质创作者
博客专家认证
2021-12-04 09:32:51

“我的Go+语言初体验” | 征文活动进行中......

点击阅读原文:我的Go+语言初体验——Go+简单应用—选择排序

目录

一、什么是 Go+ ?

二、安装配置 Go+

2.1 安装配置 Go

2.2 安装配置 Go+

三、Go+ 实践

四、总结


本文带大家来体验一下 Go+,主要包括 Ubuntu 20.04 环境下 Go+ 的安装和配置以及 Go+ 的简单应用实战-选择排序。赶紧来看下吧!

一、什么是 Go+ ?

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

Go+ 主要面向三个领域,分别是工程、STEM教育、科学数据,具有更简单、更强大、兼容性更强的特点。

🔶🔶🔶🔶🔶 我是华丽的分割线 🔶🔶🔶🔶🔶

二、安装配置 Go+

下面的安装配置是在 Ubuntu 20.04 环境下进行的,如下所示:

linuxy@linuxy:~$ uname -a
Linux linuxy 5.11.0-41-generic #45~20.04.1-Ubuntu SMP Wed Nov 10 10:20:10 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
linuxy@linuxy:~$

2.1 安装配置 Go

安装 Go+ 之前,需要先安装好 Go 的环境,依次执行如下命令。

linuxy@linuxy:~$ wget https://studygolang.com/dl/golang/go1.17.5.linux-amd64.tar.gz
linuxy@linuxy:~$ tar -zxvf go1.17.5.linux-amd64.tar.gz

如果想下载别的版本,可以到中文官网下载即可。

注意:建议用最新的 Go 版本包,刚开始使用1.15.x 的版本会有问题。

然后,修改配置文件 /etc/profile,添加如下内容:

export GOROOT=/usr/local/go     # Golong 安装目录
export GOPATH=$HOME/goProject   # 将来的工作目录
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 将 $GOROOT 和 $GOPATH 加入到 PATH中,方便使用
export GOPROXY=https://goproxy.io # 设置代理

执行如下命令:

linuxy@linuxy:~$ source /etc/profile

 最后,查看一下 go 的版本,输出版本信息表示安装成功,如下所示:

linuxy@linuxy:~$ go version
go version go1.17.3 linux/amd64
linuxy@linuxy:~$ 

Go 安装完成。 

2.2 安装配置 Go+

首先,克隆 Go+ 仓库代码,然后,进入 gop 目录,安装即可,如下所示:

git clone https://github.com/goplus/gop.git
cd gop
 
# On linux run:
./all.bash
# On Windows run:
all.bat

安装完成后,可以将 gop 的 bin 目录添加到 PATH 中,修改 /etc/profile 文件,在文件结尾添加如下内容:

export PATH=$PATH:{Go+的bin目录}

用真实的 Go+ bin 目录绝对路径替换 {Go+的bin目录} 即可。

修改后,加载配置,执行如下命令:

linuxy@linuxy:~$ source /etc/profile

 最后,执行如下命令,查看 Go+ 版本,如下所示:

linuxy@linuxy:~$ gop version
gop v1.0.32-24-g3ed0beb8 linux/amd64
linuxy@linuxy:~$ 

好了,Go+ 安装完成,下面赶紧来使用一下吧!

 

🔶🔶🔶🔶🔶 我是华丽的分割线 🔶🔶🔶🔶🔶

 

三、Go+ 实践

下面就来实践一下,使用 Go+ 实现选择排序,代码如下所示:

a := []int{23, 43, 14, 52, 46, 72, 67}
for i := 0;	i < len(a) - 1; i++ {
	Min := i;
    for j := i+1; j < len(a); j++ {
        if a[j] < a[Min] {
            Min = j
        }
    }
    if Min != i {
		a[i], a[Min] = a[Min], a[i]
    }
}
print a

将上述代码放入 main.gop 文件中,执行如下命令即可:

gop run main.gop

输出结果为:

[14 23 43 46 52 67 72]

 

🔶🔶🔶🔶🔶 我是华丽的分割线 🔶🔶🔶🔶🔶

 

四、总结

从安装配置到使用体验,整体使用体验不错,语法更加简单优雅,更趋向于低代码开发,赶紧动手体验下吧!

“我的Go+语言初体验” | 征文活动进行中......

...全文
1884 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pentral0311 2021-12-14
  • 打赏
  • 举报
回复 1

这个C这么像

Muti-Agent 社区初级贡献者 2021-12-15
  • 举报
回复 1
@pentral0311
ShirleyQueen321 2021-12-08
  • 打赏
  • 举报
回复 2
👍👍👍
Muti-Agent 社区初级贡献者 2021-12-11
  • 举报
回复 1
@ShirleyQueen321
目录: 第1章 5个例子 1 1.1 开始 1 1.2 编辑、编译和运行 3 1.3 Hello Who? 6 1.4 大数字——二维切片 8 1.5 栈——自定义类型及其方法 12 1.6 americanise示例——文件、映射和闭包 18 1.7 从极坐标到笛卡儿坐标 ——并发 28 1.8 练习 33 第2章 布尔与数值类型 35 2.1 基础 35 2.2 布尔值和布尔表达式 39 2.3 数值类型 40 2.3.1 整型 42 2.3.2 浮点类型 46 2.4 例子:statistics 53 2.4.1 实现一个简单的统计函数 54 2.4.2 实现一个基本的HTTP服务器 55 2.5 练习 58 第3章 字符串 60 3.1 字面量、操作符和转义 61 3.2 比较字符串 63 3.3 字符和字符串 65 3.4 字符串索引与切片 67 3.5 使用fmt包来格式化字符串 69 3.5.1 格式化布尔值 73 3.5.2 格式化整数 74 3.5.3 格式化字符 75 3.5.4 格式化浮点数 75 3.5.5 格式化字符串和切片 76 3.5.6 为调试格式化 78 3.6 其他字符处理相关的包 80 3.6.1 strings包 81 3.6.2 strconv包 86 3.6.3 utf8包 90 3.6.4 unicode包 91 3.6.5 regexp包 92 3.7 例子:m3u2pls 101 3.8 练习 106 第4章 集合类型 108 4.1 值、指针和引用类型 108 4.2 数组和切片 115 4.2.1 索引与分割切片 119 4.2.2 遍历切片 119 4.2.3 修改切片 121 4.2.4 排序和搜索切片 125 4.3 映射 128 4.3.1 创建和填充映射 129 4.3.2 映射查询 131 4.3.3 修改映射 132 4.3.4 键序遍历映射 132 4.3.5 映射反转 133 4.4 例子 134 4.4.1 猜测分隔符 134 4.4.2 词频统计 136 4.5 练习 141 第5章 过程式编程 144 5.1 语句基础 144 5.1.1 类型转换 147 5.1.2 类型断言 148 5.2 分支 149 5.2.1 if语句 150 5.2.2 switch语句 151 5.3 for循环语句 158 5.4 通信和并发语句 160 5.5 defer、panic和recover 166 5.6 自定义函数 171 5.6.1 函数参数 172 5.6.2 init()函数和main()函数 175 5.6.3 闭包 176 5.6.4 递归函数 178 5.6.5 运行时选择函数 181 5.6.6 泛型函数 183 5.6.7 高阶函数 187 5.7 例子:缩进排序 192 5.8 练习 197 第6章 面向对象编程 199 6.1 几个关键概念 199 6.2 自定义类型 201 6.2.1 添加方法 203 6.2.2 验证类型 207 6.3 接口 209 6.4 结构体 217 6.5 例子 224 6.5.1 FuzzyBool——一个单值自定义类型 224 6.5.2 Shapes——一系列自定义类型 229 6.5.3 有序映射——一个通用的集合类型 240 6.6 练习 248 第7章 并发编程 251 7.1 关键概念 252 7.2 例子 256 7.2.1 过滤器 256 7.2.2 并发的Grep 260 7.2.3 线程安全的映射 266 7.2.4 Apache报告 271 7.2.5 查找副本 278 7.3 练习 285 第8章 文件处理 287 8.1 自定义数据文件 287 8.1.1 处理JSON文件 290 8.1.2 处理XML文件 295 8.1.3 处理纯文本文件 301 8.1.4 处理Go语言二进制文件 307 8.1.5 处理自定义的二进制文件 309 8.2 归档文件 317 8.2.1 创建zip归档文件 317 8.2.2 创建可压缩的tar包 319 8.2.3 解开zip归档文件 321 8.2.4 解开tar归档文件 322 8.3 练习 324 第9章 包 326 9.1 自定义包 326 9.1.1 创建自定义的包 327 9.1.2 导入包 333 9.2 第三方包 334 9.3 Go命令行工具简介 335 9.4 Go标准库简介 336 9.4.1 归档和压缩包 336 9.4.2 字节流和字符串相关的包 336 9.4.3 容器包 337 9.4.4 文件和操作系统相关的包 339 9.4.5 图像处理相关的包 341 9.4.6 数学处理包 341 9.4.7 其他一些包 341 9.4.8 网络包 342 9.4.9 反射包 343 9.5 练习 346

1,075

社区成员

发帖
与我相关
我的任务
社区描述
Go+ 官方开发者社区。我们希望向广大的开发者和数据科学家介绍 Go+ 的定位和意义,并邀请更多开发者一起贡献代码、共建 Go+ 生态。 Go+ 官网:https://goplus.org/
其他 企业社区
社区管理员
  • Go+
  • 杨东杰
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

本社区为 Go+ 官方开发者社区。我们希望向广大的开发者和数据科学家介绍 Go+ 的定位和意义,并邀请更多开发者一起贡献代码、共建 Go+ 生态。

Go+ 官网:https://goplus.org/
GitHub地址:https://github.com/goplus/gop

试试用AI创作助手写篇文章吧