golang基础语法 | 青训营笔记

125 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第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;
}