这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
本人在此之前学的是Java语言,因此会在此记录下Java语言与Go语言在语法语义上的差异。
1.main方法运行
go的要执行入口方法,也就是main方法时,需要注意到其中的包名(package)是需要固定为main的,这与Java语言不同,Java语言中想要执行main方法,只需要创建一个类,包名不限,只需要编写main方法即可,以下是两种语言的输出案例: Go
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
Java
package test;
public class Demo {
public static void main(String[] args) {
System.out.println("hello world");
}
}
2.变量声明
Go语言跟Java一样是强类型的语言,在GO里面大部分的运算符和使用和优先级都跟C/C++类似。在定义变量类型时,Go前面使用var,而Java必须指定目标类型
Go
package main
import "fmt"
func main() {
var a = "test"
var b int = 1
fmt.Println(a, b)
}
Java
package test;
public class Demo {
public static void main(String[] args) {
String a="test";
int b=1;
System.out.println(a+b);
}
}
3.if语句
Go语言中if语句后面不需要用(),而Java中if语句后面需要加()。
Go
package main
import "fmt"
func main() {
if 3%2==1 {
fmt.Println("test")
}
}
Java
package test;
public class Demo {
public static void main(String[] args) {
if(3%2==1) {
System.out.println("test");
}
}
}
4.for循环
在Go中,for比较特殊,后面可以加参数(不需要加())也可以不加参数,不加参数代表着死循环,其中可以用break来跳出循环,而Java中的for循环后面必须加参数,而且也需要有()。
Go
package main
func main() {
//死循环
for{
println("test")
break
}
for i:=1;i<10;i++{
println("test")
}
}
Java
package test;
public class Demo {
public static void main(String[] args) {
for (int i = 0; i <10; i++) {
System.out.println("test");
}
}
}
5.数组定义
Go的数组定义中在指定具体数组内数据时会加类型以及大小,而Java是直接写明数据信息。
Go
package main
func main() {
a := [5]int{1, 2, 3, 4, 5}
}
Java
package test;
public class Demo {
public static void main(String[] args) {
int[] a={1,2,3,4,5};
}
}
6.遍历数组
Go中的遍历数组可以使用range关键字,其中可以用两个参数接收,第一个参数代表索引位置,第二个参数代表索引位置相对应的值;而Java中一般只是获取索引值或者直接获取数据值。
Go
package main
import "fmt"
func main() {
nums := []int{2, 3, 4}
sum := 0
for i, num := range nums {
sum += num
if num == 2 {
fmt.Println("index:", i, "num:", num) // index: 0 num: 2
}
}
println(sum)
}
Java
package test;
public class Demo {
public static void main(String[] args) {
int[] a={1,2,3,4,5};
int sum=0;
for (int i = 0; i < a.length; i++) {
sum+=a[i];
}
System.out.println(sum);
}
}
7.定义函数
Go中定义函数的方式也与Java有所不同,函数以func开头,之后会接函数名、参数列表以及返回值;而Java是方法类型+返回值+参数列表。
Go
package main
func add(a int, b int) int {
return a + b
}
Java
package test;
public class Demo {
public static int add(int a,int b) {
return a+b;
}
}
8.结构体
Go语言可以跟C/C++一样定义结构体,而Java是定义类以及类的成员变量与方法。 Go
package main
type user struct {
name string
password string
}
Java
package test;
public class Demo {
String name;
String password;
}