Go+之环境安装与程序初体验
Posted Forever_wj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go+之环境安装与程序初体验相关的知识,希望对你有一定的参考价值。
一、Go+ 简介
- 对于 Go+ 工程而言:
-
- Go+ 将支持所有 Go 功能(包括部分支持 cgo);
-
- Go+ 提供了更简单优雅的语法,比 Go 更接近自然语言;
-
- Go+ 易于学习,不必在一开始就处理工程的复杂性;
-
- Go+ 能够赋权每一行代码,可以用更少的代码做更多的工作。
- 对于 Stem 教学,与 Scratch 相比:
-
- Scratch 仅用于编程教学,它基于块状界面,自然直观,但与实际工程体验不一致;
-
- 沿用 Code Monkey 的经验,Go+ 直接使用代码进行编程教学,引入了低学习难度(不高于基于块的编程)和平滑的学习曲线;
-
- Go+ 创新地实现了工程与教学的融合,学习的语言也是工作的语言,通过创建更有成效的课程,学习者将获得更大的学习成就感。
- 对于 Data Science,Go+ 提供了更强大的数学表达式功能,例如有理数表达式,可简化数据科学用途的编程,并且 Go+ 支持字节码后端和 Go 代码生成。与 Python 相比,Go+ 提供:
-
- 更好的性能;
-
- 更像自然语言的语法;
-
- 与 Python 生态系统的兼容性(未来);
-
- 数据科学和工程的相同语言。
二、下载与安装
- 默认情况下,Go 命令使用 Google 运行的 Go 模块镜像和 Go 校验和数据库下载和验证模块,可以直接在 Go+ Downloads下载 Go 并安装程序。
- Linux:
-
- 将下载的存档解压缩到 /usr/local,在 /usr/local/go 中创建一个 Go 树;
-
- 此步骤将在解压之前删除 /usr/local/go 中的先前安装(如果有), 继续之前最好备份所有数据。例如,以 root 身份或通过 sudo 运行以下命令:
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.17.4.linux-amd64.tar.gz
-
- 将 /usr/local/go/bin 添加到 PATH 环境变量中,可以通过将以下行添加到 $HOME/.profile 或 /etc/profile(对于系统范围的安装)来执行此操作(不过,需要注意:在下次登录计算机之前,对配置文件所做的更改可能不会生效,要立即应用更改,只需直接运行 shell 命令或使用诸如 source $HOME/.profile 之类的命令从配置文件中执行它们):
export PATH=$PATH:/usr/local/go/bin
-
- 通过以下命令提示符来验证是否已安装 Go,确认该命令打印已安装的 Go 版本:
$ go version
- Mac:
-
- 打开下载的包文件,按照提示安装Go,该软件包将 Go 发行版安装到 /usr/local/go,该包应该将 /usr/local/go/bin 目录放在 PATH 环境变量中,不过可能需要重新启动所有打开的终端会话才能使更改生效;
-
- 通过打开以下命令提示符来验证您是否已安装 Go,确认该命令打印已安装的 Go 版本:
$ go version
- Windows:
-
- 打开下载的 MSI 文件并按照提示安装 Go,默认情况下,安装程序将安装 Go to Program Files 或 Program Files (x86)。;
-
- 当然可以根据需要更改位置,安装后需要关闭并重新打开所有打开的命令提示符,以便安装程序对环境所做的更改反映在命令提示符中;
-
- 验证是否已安装 Go:
-
-
- 在 Windows 中,单击“开始”菜单;
-
-
-
- 在菜单的搜索框中,键入 cmd,然后按 Enter 键;
-
-
-
- 在出现的命令提示符窗口中,键入以下命令:
-
$ go version
-
- 确认该命令打印已安装的 Go 版本。
三、编码初体验
- 将有理数作为原生 Go+ 类型引入,我们使用后缀 r 来表示有理文字。 例如,(1r << 200) 表示一个大整数,其值等于 2200,而 4/5r 表示有理常数 4/5:
import "math/big"
var a bigint = 1r << 65 // bigint, large than int64
var b bigrat = 4/5r // bigrat
c := b - 1/3r + 3 * 1/2r // bigrat
println a, b, c
var x *big.Int = 1r << 65 // (1r << 65) is untyped bigint, and can be assigned to *big.Int
var y *big.Rat = 4/5r
println x, y
- 运行结果:
36893488147419103232 4/5 59/30
36893488147419103232 4/5
- 数组的使用:
a := [x*x for x <- [1, 3, 5, 7, 11]]
b := [x*x for x <- [1, 3, 5, 7, 11], x > 3]
c := [i+v for i, v <- [1, 3, 5, 7, 11], i%2 == 1]
d := [k+","+s for k, s <- "Hello": "xsw", "Hi": "Go+"]
arr := [1, 2, 3, 4, 5, 6]
e := [[a, b] for a <- arr, a < b for b <- arr, b > 2]
x := x: i for i, x <- [1, 3, 5, 7, 11]
y := x: i for i, x <- [1, 3, 5, 7, 11], i%2 == 1
z := v: k for k, v <- 1: "Hello", 3: "Hi", 5: "xsw", 7: "Go+", k > 3
println a, b, c, d, arr, e, x, y, z
- 集合数据筛选:
type student struct
name string
score int
students := [student"Ken", 90, student"Jason", 80, student"Lily", 85]
unknownScore, ok := x.score for x <- students, x.name == "Unknown"
jasonScore := x.score for x <- students, x.name == "Jason"
println unknownScore, ok // output: 0 false
println jasonScore // output: 80
- 运行结果:
0 false
80
- 检查集合中是否存在数据:
students := [student"Ken", 90, student"Jason", 80, student"Lily", 85]
hasJason := for x <- students, x.name == "Jason" // is any student named Jason?
hasFailed := for x <- students, x.score < 60 // is any student failed?
println hasJason, hasFailed
- 运行结果:
true false
- 范围表示:
for i <- :10
println i
for i := range :10:2
println i
for i := range 1:10:3
println i
for range :10
println "Range expression"
以上是关于Go+之环境安装与程序初体验的主要内容,如果未能解决你的问题,请参考以下文章