上一节 我的Go+语言初体验——【如果你学习过 Python,那么如何入门 Go+ 语言?】安装篇 我们讲述了如何安装 GO+ 语言,这篇博文我给自己设立的目标是解决以下几个问题:
文章目录
- 注释怎么写
- 输出语句
- 如何区别作用域?(C 语言通过大括号,Python 通过缩进形式)
- 三大程序结构(顺序、循环、分支)
- 分支种类(if…else…、if…elif…else…、switch….)
- 循环种类(for…while…. 有没有类似 Python 中,for…else…的特殊用法?)
- 1. 注释语法
- 2. 输出语句
- 3. 作用域的划分方式
- 4. 分支语句
- 5. 循环语句
- 6. 函数调用
- 小结
为什么要把注释语法放在第一位呢?因为我认为注释可以让你具有随意修改代码源文件的能力,而不用担心会改变程序运行逻辑,你可以随意添加你想要添加的东西,帮助你理解代码。
从官方文档中(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) }
在 Python 中, 我们使用 # 号作为单行注释。 2. 输出语句
我把输出语句放在了需要关注的第二位,因为只有输出语句才能帮助我们知道程序现在的状态,输出语句就像是程序的嘴巴一样,它会告诉我们它现在的各项特征。即使不借助调试工具,我们也可以使用输出语句来进行 Debug。
我们现在需要搞清楚 Go+ 的输出语句是否和 Python 类似(即和 C 语言进行对比,不需要符号占位修饰)。如果不理解,可以参考下面的例子:
在 C 语言中,
#includeint 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 > 05. 循环语句
以下是 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 进行比较。
活动链接:https://bbs.csdn.net/topics/603464006?utm_source=1594742339
本人博客地址:https://blog.csdn.net/weixin_39541632?spm=1001.2101.3001.5343
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)