0
点赞
收藏
分享

微信扫一扫

我的Go+语言初体验——【如果你学习过 Python,那么如何入门 Go+ 语言?】基础篇

上一节 我的Go+语言初体验——【如果你学习过 Python,那么如何入门 Go+ 语言?】安装篇 我们讲述了如何安装 GO+ 语言,这篇博文我给自己设立的目标是解决以下几个问题:

  • 注释怎么写
  • 输出语句
  • 如何区别作用域?(C 语言通过大括号,Python 通过缩进形式)
  • 三大程序结构(顺序、循环、分支)
  • 分支种类(if…else…、if…elif…else…、switch….)
  • 循环种类(for…while…. 有没有类似 Python 中,for…else…的特殊用法?)



文章目录

  • ​​1. 注释语法​​
  • ​​2. 输出语句​​
  • ​​3. 作用域的划分方式​​
  • ​​4. 分支语句​​
  • ​​5. 循环语句​​
  • ​​6. 函数调用​​
  • ​​小结​​

1. 注释语法

为什么要把注释语法放在第一位呢?因为我认为注释可以让你具有随意修改代码源文件的能力,而不用担心会改变程序运行逻辑,你可以随意添加你想要添加的东西,帮助你理解代码。

从官方文档中(​​GoPlus​​),我们可以知道,GO+ 的注释语法和 C 语言类似,使用双斜线的单行注释形式和使用斜杠和星的块状注释形式。就像是下面这样:

package main

func main() {
type student struct {
name string
score int
}
/*
以下定义了一个学生集合
*/
students := [student{"Ken", 90}, student{"Jason", 80}, student{"Lily", 85}]
jasonScore, ok := {x.score for x <- students, x.name == "Jason"} // 对 x.score 进行解包,其中 ok 为标志变量,表示值是否存在
println(jasonScore, ok)
}

我的Go+语言初体验——【如果你学习过 Python,那么如何入门 Go+ 语言?】基础篇_循环语句

在 Python 中, 我们使用 # 号作为单行注释。

2. 输出语句

我把输出语句放在了需要关注的第二位,因为只有输出语句才能帮助我们知道程序现在的状态,输出语句就像是程序的嘴巴一样,它会告诉我们它现在的各项特征。即使不借助调试工具,我们也可以使用输出语句来进行 Debug。

我们现在需要搞清楚 Go+ 的输出语句是否和 Python 类似(即和 C 语言进行对比,不需要符号占位修饰)。如果不理解,可以参考下面的例子:

在 C 语言中,

#include <stdio.h>
int main()
{
int x = 10;
printf("%d", x); // 在输出的时候我们需要使用 %d 这个符号告诉编译器,我们要输出一个 INT 型,让编译器用 INT 型来解释变量 x
}

在 Python 中,

x = 10 # x = "10"
print(x) # 我们无需关心 x 代表的意义,print 即可。

在 Go+ 中,输出语法我认为和 Python 是十分相像的。在 Go+ 中,使用 ​​println​​ 作为输出关键字。

我们不需要对结果进行字符串修饰,就像是 C 语言那样,更像是 Python,想输出什么就输出什么。

a := Int(1r)
a += Int(2r)
println(a + Int(3r))
println(-a)

是不是有 ​​print("Hello, World!")​​ 那味了?

println("Hello, Go+")

对于 Go+ 中的常用数据结构,也可以直接输出。

arr := [1, 3, 5, 7, 11, 13, 17, 19]
println(arr)
println([x*x for x <- arr, x > 3])
m := {"Hi": 1, "Go+": 2}
println(m)

3. 作用域的划分方式

参考网上案例:学习Go语言必备案例 (3),寻找关于作用域的蛛丝马迹。

  • 从这个案例中我们可以看出 Go+ 语言,使用类似于 C/C++ 的方式来划分作用域(使用大括号)。
  • 不论是循环语句,还是函数,均使用大括号的形式。
package main

import (
"fmt"
)
func f(from string) {
for i := 0; i < 3; i++ {
fmt.Println(from, ":", i)
}
}
func main() {
//假设我们有一个函数叫做 f(s)。我们使用一般的方式调并同时运行。
f("direct")

//使用 go f(s) 在一个 Go 协程中调用这个函数。
// 这个新的 Go 协程将会并行的执行这个函数调用。
go f("goroutine")

//你也可以为匿名函数启动一个 Go 协程。
go func(msg string) {
fmt.Println(msg)
}("going")

//现在这两个 Go 协程在独立的 Go 协程中异步的运行,所以我们需要等它们执行结束。
// 这里的 Scanln 代码需要我们在程序退出前按下任意键结束。
var input string
fmt.Scanln(&input)
fmt.Println("done")
}

4. 分支语句

和 C 语言类似,我们使用 ​​if..else if... else...​​ 即可。

x := 10
if x > 0 {
println("x > 0")
} else if x == 0 {
println("x == 0")
}else {
println("x < 0")
}

同样的功能使用 Python 也很容易实现,在 Python 交互式界面中。

>>> x = 10
>>> if x > 0:
... print("x > 0")
... elif x == 0:
... print("x = 0")
... else:
... print("x < 0")
...
x > 0

5. 循环语句

以下是 ​​for loop​​​,和 Python 所使用的 ​​for in ...​​​ 结构不太一样,Go+ 使用 ​​for ... <- ...​​ 形式,就像是下面这个例子一样,如果学习过 Python,应该很好理解下面程序的作用。

sum := 0
for x <- [1, 2, 3, 4, 5] {
sum += x
}
println(sum) // 15

相同功能使用 Python 来写是这样的:

sum = 0
for x in [1,2,3,4,5]:
sum += x
print(sum)

在 Go+ 的 ​​for loop​​ 中,我们还可以这样写,用来筛选数据:

sum := 0
for x <- [1, 2, 3, 4, 5], x > 3 {
sum += x
}
println(sum) // 9

相同功能使用 Python 来写是这样的:

sum = 0
for i in [x for x in [1, 2, 3, 4, 5] if x > 3]:
sum += x
print(sum) // 9

比较上述两种写法,我不认为是循环语句的不同,而是类似于 Python 列表表达式在 Go+ 上的体现,你看,将 Python 语句中的 ​​if​​​ 换成 ​​,​​ 就十分类似于 Go 语言的写法。

关于 ​​while loop​​​,不像是 Python 中有 ​​while​​​ 语句,​​Go+​​​ 中没有 ​​while​​​ 关键词,只能通过 ​​for​​ 来实现,以下是二者的区别:

i:=0
for {
// do something
i++
if i > 10 {
break;
}
}
println(i) // 11
i = 0
while i > 10:
i += 1
print(i)

6. 函数调用

  • 有些功能不需要返回值,这种情况下 return_types 不是必须的。
  • 形参指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。

快速入门,告诉你 Go 语言的函数调用应该怎么写:

package main

func myFunction(a, b int) (int, int) { // 函数名(形参,类型)(返回类型1,返回类型2...)
return a + b, a - b
}

func main() {
println(myFunction(66, 77)) // 143 -11
}

小结

以上就是关于 Go+ 语言的基础部分,这些都是我对一门新的编程语言十分好奇的地方,下次我将从 Go+ 有趣的数据结构入手,和 Python 进行比较。


举报

相关推荐

0 条评论