我的Go+语言初体验--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 并安装程序。
  • 如下所示,指定下载,可以根据自己的硬件设备和环境进行相应选择的下载:

在这里插入图片描述

  • go1.17.5 的版本选择:

在这里插入图片描述

  • go1.16.12 版本选择下载:

在这里插入图片描述

② 安装

  • 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+ 扩展插件

  • 在 VSCode 安装 goplus 扩展插件:
    • 启动 VSCode,点击左侧菜单栏中的 “扩展” 按钮,进入 VSCode 应用商店;
    • 在 VSCode 应用商店搜索 “gopplus”(插件 ID:goplus.gop),找到 “goplus” 扩展插件;
    • 点击 “goplus” 扩展插件右下方的“安装”按钮,安装 Go+ 扩展插件。
  • VSCode 成功安装 goplus 扩展插件后,如下图所示:

在这里插入图片描述

④ Go+ 学习环境

三、编码初体验

① 三种方式打印 “Hello world”

  • 命令方式:
println "Hello world"
  • 函数方式:
println("Hello world")
  • 软件工程方式:
package main

func main() {
    
    
    println("Hello world")
}

② 值类型

  • Go+ 具有多种值类型,包括字符串、整数、浮点数、布尔值等。如下所示,字符串可以用 + 拼在一起,整数和浮点数,布尔运算符等:
println "Go"+"Plus"
println "1+1 =", 1+1
println "7.0/3.0 =", 7.0/3.0
println true && false
println true || false
println !true
  • 运行结果:
GoPlus
1+1 = 2
7.0/3.0 = 2.3333333333333335
false
true
false

③ 有理数

  • 将有理数作为原生 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)

  • 范围表示:
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"
}
  • 运行结果:
0
1
2
3
4
5
6
7
8
9
0
2
4
6
8
1
4
7
Range expression
Range expression
Range expression
Range expression
Range expression
Range expression
Range expression
Range expression
Range expression
Range expression

四、备注

Guess you like

Origin blog.csdn.net/Forever_wj/article/details/121837519