实践记录以及工具使用 | 豆包MarsCode AI 刷题

25 阅读5分钟

选题方向:后端实践课题 选题题目:Go语言入门指南:基础语法与常用特性解析 选题目的:为了了解go语言和java语言的共性和区别,在了解java语言的基础上更加深入的了解go语言 go语言的特性:

  1. 语法简单,高效,简洁
  2. 拥有垃圾回收机制
  3. 天然支持高并发,内置并发支持
  4. 拥有强大的标准库
  5. 跟Java一样可以跨平台编辑 go语言的基础语法:

HelloWorld


package main 

import "fmt" 

func main() {
	fmt.Println("hello world")
}

关键字解释:

  • package :来支持代码模块化和代码复用,用来指定当前的包名,必须要有一个main包,表示一个可独立运行的程序
  • import:用来导入其他的包(package)的关键字,import后面可以接圆括号,将导入的所有的包括在里面
  • func main() 程序的入口 常用的fmt函数和用法如下:
  • fmt.Print:打印输入内容
  • fmt.Println:打印输入的内容并换行
  • fmt.Scan:从控制台读入一个值

这里附上Java代码

public class Main{
    public static void main(String[] args) {
        System.out.println("hello world");
    }
}

var

变量

var + 变量名 + 变量类型 go语言不需要具体的去声明变量是什么类型,因为他会自动去为它解析成他的类型,这跟java语言很不一样

//java语言的写法
int a = 10 
//go语言的写法
var a = 10 //第一种写法

a := 10//第二种写法

//声明变量啊的类型
var a int
//然后赋值
a = 10 //第三种写法

由此可见,go语言在编写程序的时候更加注重的内容,语言的语法更加的灵活,没有那么多的格式去限制我们去写程序

for

值得一提的是,go语言里只有for这一个循环,像java语言的while循环和do while循环都没有,这里也体现了go语言的简洁性


package main

import "fmt"

func main() {

	//程序的死循环
	for {
		fmt.Println("hello")
		break
	}
	//程序的普通循环
	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}

	//程序的while循环
	i := 1
	for i <= 2 {
		fmt.Println(i)
		i++
	}
}


我们可以看到go语言的格式,go语言的for循环条件内部不需要括号包括,严格的指定了格式,并且左大括号必须在当前行,严格的指定了go语言的书写规范,使得go语言能够让更多的人了解和学习,让学习成本更加的低。

for range 在go语言中,for range是一种特殊的for循环形式,用于遍历数组,切片,映射和通道等数据结构 for range 的语法如下

for 索引,值:range 表达式 {
    //循环执行的代码块
}

其中,

  • "索引"是当前元素的索引或键
  • "值"是当前元素的值
  • "表达式"时要迭代的数据结构 这里附上Java代码
public class Main{
    public static void main(String[] args) {
        while(true){
            System.out.println("hello");
            break;
        }

        for (int i = 0; i < 10; i++) {
            System.out.println(i);
            
        }
        int i = 1;
        while(i <=2){
            System.out.println(i);
            i++;
        }
    }
}

if


package main
import "fmt"
func main() {

	if 7%2 == 0 {
		fmt.Println("7是偶数")
	} else {
		fmt.Println("7是奇数")
	}

	if num := 9; num < 0 {
		fmt.Println(num, "is negative")
	} else if num < 10 {
		fmt.Println(num, "has 1 digit")
	} else {
		fmt.Println(num, "has multiple digits")
	}


}

go语言的if语句跟java语句大差不差

这里附上Java代码

public class Main{

    public static void main(String[] args) {

        if (7 % 2 == 0) {
            System.out.println("7是偶数");
        } else {
            System.out.println("7是奇数");
        } 
        
    }
}

switch

go语言代码展示


package main

import (
	"fmt"
)

func main() {
	a := 2
	switch a {
	case 1:
		fmt.Println("1")
	case 2:
		fmt.Println("2")
	case 3:
		fmt.Println("3")
	case 4, 5:
		fmt.Println("4或者5")
	default:
		fmt.Println("other")
	}

}

java代码展示


public class Main{

    public static void main(String[] args) {
        int a = 2;
        switch (a){
            case 1 :
                System.out.println("1");
            case 2:
                System.out.println("2");
            case 3:
                System.out.println("3");
            case 4,5:
                System.out.println("4或者5");
            default:
                System.out.println("other");
        }
    }
}

array

go语言代码


package main

import (
	"fmt"
)

func main() {
	var a [5]int
	a[4] = 100
	fmt.Println(a[0])
	fmt.Println(a[4])

	b := [5]int{1, 2, 3, 4, 5}
	fmt.Println(b)
}

java语言代码

public class Main{

    public static void main(String[] args) {
        int[] a = new int[5];
        a[4] = 100;
        System.out.println(a[0]);
        System.out.println(a[4]);

        int[] b = new int[]{1, 2, 3, 4, 5};
        System.out.println(b.toString());
        
    }
}

go语言的数组跟他的变量一样,数值的赋值和引用也和其他语言中的一样 值得一提的是,go语言打印数组只需要将他的变量名放入打印语句就可以了,默认打印的就是数组的值,但是java代码默认打印的是数组的地址,需要改写数组的toString函数才可以答应数组的值

我们可以看出,java代码和go语言的代码的区别就在于switch后面有没有括号

slice

go语言代码

package main

import "fmt"

func main() {
	s := make([]string, 3)
	s[0] = "a"
	s[1] = "b"
	s[2] = "c"
	//答应数组第三个位置上的数值
	fmt.Println(s[2])
	//答应数组的长度
	fmt.Println(len(s))
}


java语言代码


import java.util.ArrayList;
import java.util.List;

public class Main{

    public static void main(String[] args) {
        List<String> list = new ArrayList<>(3);
        list.add(0, "a");
        list.add(1, "b");
        list.add(2, "c");
        System.out.println(list.get(2));
        System.out.println(list.size());
        
    }
}

go语言的切片类型slice跟数组十分相似,操作步骤几乎一致,本质上来讲切片就是一个动态数组,要注意的是创建切片的时候要使用关键字make(),后面接收两个参数,第一个是数值类型,第二个是切片的大小。

数据类型

  1. 整数类型(int)
  2. 浮点数类型(float)
  3. 布尔类型(bool)
  4. 指针类型
  5. 字符类型
  6. 字符串类型(string)
  7. 数组类型
  8. 切片类型
  9. 结构体类型
  10. 映射类型

与java语言有较大的不同的是:go语言具有指针类型,切片类型,结构体类型,映射类型,其中结构体类型和指针类型相似,但是也有一些差别(go语言的指针不能够进行偏移和运算,是安全指针)