Go语言和其他语言的不同之基本语法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言和其他语言的不同之基本语法相关的知识,希望对你有一定的参考价值。

参考技术A

Go语言作为出现比较晚的一门编程语言,在其原生支持高并发、云原生等领域的优秀表现,像目前比较流行的容器编排技术Kubernetes、容器技术Docker都是用Go语言写的,像Java等其他面向对象的语言,虽然也能做云原生相关的开发,但是支持的程度远没有Go语言高,凭借其语言特性和简单的编程方式,弥补了其他编程语言一定程度上的不足,一度成为一个热门的编程语言。

最近在学习Go语言,我之前使用过C#、Java等面向对象编程的语言,发现其中有很多的编程方式和其他语言有区别的地方,好记性不如烂笔头,总结一下,和其他语言做个对比。这里只总结差异的地方,具体的语法不做详细的介绍。

种一棵树最好的时间是十年前,其次是现在。

3)变量初始化时候可以和其他语言一样直接在变量后面加等号,等号后面为要初始化的值,也可以使用变量名:=变量值的简单方式

3)变量赋值 Go语言的变量赋值和多数语言一致,但是Go语言提供了多重赋值的功能,比如下面这个交换i、j变量的语句:

在不支持多重赋值的语言中,交换两个变量的值需要引入一个中间变量:

4)匿名变量

在使用其他语言时,有时候要获取一个值,却因为该函数返回多个值而不得不定义很多没有的变量,Go语言可以借助多重返回值和匿名变量来避免这种写法,使代码看起来更优雅。

假如GetName()函数返回3个值,分别是firstName,lastName和nickName

若指向获得nickName,则函数调用可以这样写

这种写法可以让代码更清晰,从而大幅降低沟通的复杂度和维护的难度。

1)基本常量

常量使用关键字const 定义,可以限定常量类型,但不是必须的,如果没有定义常量的类型,是无类型常量

2)预定义常量

Go语言预定义了这些常量 true、false和iota

iota比较特殊,可以被任务是一个可被编译器修改的常量,在每个const关键字出现时被重置为0,然后在下一个const出现之前每出现一个iota,其所代表的数字会自动加1.

3)枚举

1)int 和int32在Go语言中被认为是两种不同类型的类型

2)Go语言定义了两个浮点型float32和float64,其中前者等价于C语言的float类型,后者等价于C语言的double类型

3)go语言支持复数类型

复数实际上是由两个实数(在计算机中使用浮点数表示)构成,一个表示实部(real)、一个表示虚部(imag)。也就是数学上的那个复数

复数的表示

实部与虚部

对于一个复数z=complex(x,y),就可以通过Go语言内置函数real(z)获得该复数的实部,也就是x,通过imag(z)获得该复数的虚部,也就是y

4)数组(值类型,长度在定义后无法再次修改,每次传递都将产生一个副本。)

5)数组切片(slice)

数组切片(slice)弥补了数组的不足,其数据结构可以抽象为以下三个变量:

6)Map 在go语言中Map不需要引入任何库,使用很方便

Go循环语句只支持for关键字,不支持while和do-while

goto语句的语义非常简单,就是跳转到本函数内的某个标签

今天就介绍到这里,以后我会在总结Go语言在其他方面比如并发编程、面向对象、网络编程等方面的不同及使用方法。希望对大家有所帮助。

我的Go+语言初体验——Go+ 基本语法之 Switch

我的Go+语言初体验——(5)Go+ 基本语法之 Switch

“我的Go+语言初体验” | 征文活动进行中…

Go+ 语言中提供多路分支条件语句 switch, 用于在不同条件下执行不同动作。
使用 if-else 嵌套结构也可以实现多路分支条件结构,但程序冗长,可读性差。
本文的例程按照 Go+ 进行了优化和测试,Go+ 的编程风格更加简洁。


1. Switch 语法:基本语法

switch 是多路分支条件语句, 用于基于不同条件执行不同动作。

使用 if-else 嵌套结构也可以实现多路分支条件结构,但程序冗长,可读性差。Go+ 提供了更简练的 Switch 多路分支条件语句,将一个表达式的求值结果与可能的值的列表进行匹配,并根据匹配结果执行相应的代码。

switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break。

Go+ 编程语言中 switch 语句的语法如下:

switch var 
    case var1:
    	statement(s);
    case var2:
    	statement(s);
    // 可以定义任意个数的 case
    default: // Optional
    	statement(s);

变量 var 可以是任何类型,var1, var2 可以是与 var 相同类型的常量、变量或表达式。

switch 语句中可以有表达式,也可以省略。如果 switch 语句中没有表达式,则默认为 “true”,并对每个 case 表达式求值,执行结果为 “true” 的 case。


2. 【例程1】switch 有表达式

// Example 1: a switch statement with expression
dayOfTheWeek := 0
switch dayOfTheWeek 
case 1:
	println "Monday"
case 2:
	println "Tuesday"
case 3:
	println "Wednesday"
case 4:
	println "Thursday"
case 5:
	println "Friday"
case 6:
	println "Saturday"
case 0:
	println "Sunday"


/* Running results:
Sunday
*/

3. 【例程2】switch 无表达式

// Example 2: a switch statement without expression
var num int = 80

switch  //switch without expression
case num < 50:
	printf "%d < 50\\n", num
case num < 100:
	printf "%d < 100\\n", num
case num < 200:
	printf "%d < 200", num


/* Running results:
80 < 100
*/

程序说明:

  1. switch 语句中没有表达式,则默认为 “true”。对每个 case 表达式求值,执行结果为 “true” 的 case。
  2. case 后面可以是常量,也可以是表达式,对 case 表达式求值,根据表达式的结果为 “true” 或 “false” 与 switch 进行匹配。


4. 【例程3】default case

在 Switch 语句中,关键字 default 表示:当没有其他 case 匹配时,将执行 default 语句。

显然,多个 case 和 default 只能执行一个。

// Example 3: a switch example with default case
// When no other case matches, the default statement is executed.
dayOfTheWeek := 2
switch dayOfTheWeek 
case 0:
	println "Today is Sunday."
case 6:
	println "Today is Saturday."
default:
	println "Today is a weekday."


/* Running results:
Today is a weekday.
*/

程序说明:

dayOfTheWeek := 2,与 switch 中的 case 0,case 6 都不匹配,执行 default 语句。



5. 【例程4】fallthrough

在 Go+ 语言中 case 是一个独立的代码块,默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case。

为了兼容一些移植代码,如果需要执行后面的 case,可以使用关键字 fallthrough 来实现这一功能。

fallthrough 必须是 case 语句块中的最后一条语句。如果它出现在语句块的中间,编译器将会报错。

新编写的代码,不建议使用 fallthrough。

// Example 4: a switch example with fallthrough
var num int = 80

println "Switch with fallthrough:"
switch 
case num < 50:
	printf "%d < 50\\n", num
	fallthrough
case num < 100:
	printf "%d < 100\\n", num
	fallthrough
case num < 200:
	printf "%d < 200", num


/* Running results:
Switch with fallthrough:
80 < 100
80 < 200
*/

程序说明:

  1. 【例程4】与【例程2】的区别是 case 语句中的 “fallthrough”。【例程2】 case 语句中没有 “fallthrough”,程序依次对 case 表达式求值,直到找到匹配项,只要找到匹配项就跳出 switch 语句,而不再执行下一条 case。【例程4】 case 语句中带有 “fallthrough”,找到匹配项后并不会跳出 switch 语句,继续执行下一条 case。
  2. 如果 switch 没有表达式则按 “true” 进行匹配。
  3. case 中的表达式不必是常量,也可以在运行时被求值。


6. 【例程5】多条件匹配

在 Go+ 语言中,一个 case 分支中可以包含多个值或多个表达式,每个条件之间用逗号分隔。

多个值或表达式之间相当于 “与” 的关系,只要匹配其中的一个条件,就执行该 case 的语句。

// Example 5: a switch example of multiple expressions in case
var letter string = "u"

switch letter 
case "a", "e", "i", "o", "u":
	printf "%s is a vowel.", letter
default:
	printf "%s isn't a vowel.", letter


/* Running results:
u is a vowel.
*/

【本节完】


版权声明:

原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/121722748)

Copyright 2021 youcans, XUPT

Crated:2021-12-04


欢迎关注『我的Go+语言初体验』系列,持续更新中…

我的Go+语言初体验——(1)超详细安装教程
我的Go+语言初体验——(2) IDE 详细安装教程
我的Go+语言初体验——(3)Go+ 数据类型
我的Go+语言初体验——(4)零基础学习 Go+ 爬虫
我的Go+语言初体验——(5)Go+ 基本语法之 Switch

“我的Go+语言初体验” | 征文活动进行中…

以上是关于Go语言和其他语言的不同之基本语法的主要内容,如果未能解决你的问题,请参考以下文章

Go语言基础之map

GO语言之环境搭建和基本命令

Go语言基础之基本数据类型

go语言语法(基础语法篇)

Go语言基础之基本数据类型

Go语言基础之基本数据类型