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+之环境安装与程序初体验的主要内容,如果未能解决你的问题,请参考以下文章

我的Go+语言初体验——IDE 详细安装教程

GoGo入门之初体验(Windows版)

Go语言之gorountine与管道初体验

我的Go+语言初体验——超详细安装教程

我的Go+语言初体验——环境搭建篇(直男程序员的真实体验)

我的Go+语言初体验——Go+ 基本语法之 Switch