栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Go+之环境安装与程序初体验

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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"
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/649533.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号