Go和Java条件控制

内容纲要
特性 Go Java 说明
if 不需要圆括号包围条件,强制使用大括号 条件必须包含在圆括号中,大括号可选 Go在if语句中不使用圆括号,Go鼓励(实际上是强制)使用大括号包围if语句的主体,而Java则在条件周围使用圆括号,并允许省略大括号(如果只有一条语句)。
switch 无需break自动终止,可以不带表达式 需要break防止穿透,始终带有表达式 在Go中,switch不会自动穿透到下一个案例,除非使用了fallthrough语句。switch可以不带表达式,这时它会像是switch true {...}这样工作,从而可以用作更一般的分支结构。Java中必须显示使用break来防止穿透。
range/for range提供对数组、切片、字符串、map或通道的迭代 for是Java中实现迭代的唯一方式 range在Go中是一个关键字,它简化了容器类型(例如数组和切片等)的迭代。在Java中,对于数组和Iterable接口的实现,可以使用增强的for循环进行迭代。

示例代码

if 语句

Go:

func checkPositive(num int) {
    if num > 0 {
        fmt.Println("Positive")
    } else {
        fmt.Println("Non-positive")
    }
}

Java:

void checkPositive(int num) {
    if (num > 0) {
        System.out.println("Positive");
    } else {
        System.out.println("Non-positive");
    }
}

switch 语句

Go:

func dayOfWeek(day int) {
    switch day {
    case 1:
        fmt.Println("Monday")
    case 2:
        fmt.Println("Tuesday")
    // ... 更多案例 ...
    default:
        fmt.Println("Invalid day")
    }
}

Java:

void dayOfWeek(int day) {
    switch (day) {
    case 1:
        System.out.println("Monday");
        break;
    case 2:
        System.out.println("Tuesday");
        break;
    // ... 更多案例 ...
    default:
        System.out.println("Invalid day");
        break;
    }
}

range/for 循环

Go (range):

func printSlice(s []string) {
    for index, value := range s {
        fmt.Println(index, value)
    }
}

func printMap(m map[string]int) {
    for key, value := range m {
        fmt.Println(key, value)
    }
}

Java (for):

void printArray(String[] arr) {
    for (int i = 0; i < arr.length; i++) {
        System.out.println(i + " " + arr[i]);
    }
}

void printList(List<String> list) {
    for (String item : list) {
        System.out.println(item);
    }
}

void printMap(Map<String, Integer> map) {
    for (Map.Entry<String, Integer> entry : map.entrySet()) {
        System.out.println(entry.getKey() + " " + entry.getValue());
    }
}

在Java中,集合迭代通常要依赖于Iterator或增强的for循环,而在Go中,可以直接使用range进行简洁的迭代。此外,在Go中range在遍历时还会返回索引和值(或键和值),而在Java中,需要明确地访问这些元素。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部