我的Go+语言初体验——Go plus 浅尝一下 (go、python开发者轻松上手👍)
安装
gop项目地址: https://github.com/goplus/gop.git
按照文档提示
git clone https://github.com/goplus/gop.git
cd gop
./all.bash
安装完之后:

运行hello world程序
// tmp/helloworld.gop
package main
func main() {
println("hello world!")
}

ATTENTION⚠️ 解决(非代码问题)运行不成功

在用 gop run tmp/helloworld.gop 运行的过程中,刚开始始终运行不成功
检查tmp目录下存在go.mod文件,删除该文件再运行,成功解决✅
变量
gop支持不同类型的变量联结:
// tmp/variables.gop
package main
func main() {
x := 123.1 - 3i
y, z := "Hello, ", 123
println(y+"complex:", x+1, "int:", z)
}

如果用go语言实现以上逻辑:
// tmp/variables.go
package main
import "fmt"
func main() {
x := 123.1 - 3i
y, z := "Hello, ", 123
fmt.Printf("%scomplex:%v int: %d\n", y, x+1, z)
}
在go语言中需要用format来格式化输出,gop中可以忽略变量的类型,直接用println进行输出
gop 玩锤子剪刀布游戏
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:

现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入格式:
输入第 1 行给出正整数 N(≤10
5
),即双方交锋的次数。随后 N 行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C 代表“锤子”、J 代表“剪刀”、B 代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。
输出格式:
输出第 1、2 行分别给出甲、乙的胜、平、负次数,数字间以 1 个空格分隔。第 3 行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有 1 个空格。如果解不唯一,则输出按字母序最小的解。
输入样例:
10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J
输出样例:
5 3 2
2 3 5
B B
// tmp/cai_quan.gop
package main
import "fmt"
func main() {
var count int
_, _ = fmt.Scanf("%d", &count) // 读取输入的比赛次数
a := make(map[int]string, count)
b := make(map[int]string, count)
var aWin, aLose, aTie int // a 赢,输,平
var bWin, bLose, bTie int
var aMostWinGestureCount int // a最多次赢的次数
var bMostWinGestureCount int
var aMostWinGesture string // a最多次赢的手势
var bMostWinGesture string
aWGesture := make(map[string]int) // 用map集合来记录每个回合的出拳
bWGesture := make(map[string]int)
// 循环count次录入回合数据
for i := 0; i < count; i++ {
var tempA, tempB string
_, _ = fmt.Scanf("%s %s", &tempA, &tempB)
a[i], b[i] = tempA, tempB
// 计算输赢和手势数据
if a[i] == "C" && b[i] == "J" || a[i] == "J" && b[i] == "B" || a[i] == "B" && b[i] == "C" {
aWin++
aWGesture[a[i]]++
bLose++
} else if a[i] == "C" && b[i] == "B" || a[i] == "J" && b[i] == "C" || a[i] == "B" && b[i] == "J" {
aLose++
bWin++
bWGesture[b[i]]++
} else {
aTie++
bTie++
}
}
// 计算a最多次赢的手势
for k, v := range aWGesture {
if v >= aMostWinGestureCount {
if aMostWinGesture == "" {
aMostWinGesture = k
} else if aMostWinGesture > k {
aMostWinGesture = k
}
}
}
// 计算b最多次赢的手势
for k, v := range bWGesture {
if v >= bMostWinGestureCount {
if bMostWinGesture == "" {
bMostWinGesture = k
} else if bMostWinGesture > k {
bMostWinGesture = k
}
}
}
// 输出结果
println(aWin, aTie, aLose)
println(bWin, bTie, bLose)
println(aMostWinGesture, bMostWinGesture)
}
未完待续..
[“我的GO+初体验” | 征文活动进行中......] 👉👉👉 https://bbs.csdn.net/topics/603464006
相关推荐
基于Go语言+HTML实现区块链的信对账系统源码及设计报告等全部资料.zip
基于Go语言+HTML实现区块链的信对账系统源码及设计报告等全部资料.zip 是一个基于区块链的可信对账系统,为数据的可信对账提供了安全可靠的解决方案。该项目采用了前后端分离的架构,前端使用 Vue 3 和 Element Plus 构建用户界面,后端使用 Go 语言和 Gin 框架进行开发,数据库使用 MySQL 和 Redis。
grpc-python-go:通过gRPC的客户端服务器实现
gRPC和协议缓冲区 介绍 这是使用gRPC进行序列化和传输的客户端服务器实现。 gRPC基础 使用进行序列化。 这意味着您的数据结构被编码为字节并准备传输 使用 tcp协议进行传输,这保证了交付 服务 Go服务将收集指标(虚拟) Python服务将检测异常 Go客户端将通过与Python服务器通信 在gRPC我们定义了一个原型文件,在其中定义了要发送的消息和RPC方法。 我们的方法Detect使用OutliersRequest消息类型作为输入,并使用OutliersResponse消息类型作为输出。 OutliersRequest消息类型是Metric的列表/切片,而OutliersResponse消息类型是找到离群值的索引的列表/切片。 运行说明 创建一个virtualenv python3 -m venv venv 激活它source venv/bin/activate 安装
编程语言进阶实战项目集
编程语言进阶实战项目集
推荐20本软件开发好书
推荐20本软件开发好书 这20本好书涉及到Go,Python,C,C++,算法,软件设计,Mysql,Java,Spring Boot,Unix/Linux编程,TCPIP Socket
编程:算法和代码片段的多语言集合
程式设计 多种算法和代码段的集合。 编程语言 C C# C ++ 迪克图 F# 走 Groovy Java JavaScript PHP Python Ruby Scala SQL


