Der Unterschied zwischen der Bezeichnung „break/continue“ und „goto“ in Go

  1. weiter mit Beschriftung :

    Springen Sie direkt zur nächsten Iteration der äußersten Schleife, die durch die Beschriftung gekennzeichnet ist, und ignorieren Sie dabei den verbleibenden Code der aktuellen Iteration.

  2. Beschriftete Pause :

    Springen Sie direkt aus der äußersten Schleife, die durch die Beschriftung gekennzeichnet ist, und führen Sie den Code nach der Schleife weiter aus.

  3. Das Schlüsselwort goto
    goto kann bedingungslos zur angegebenen Bezeichnung im Programm springen. In diesem Fall können beliebige Beschriftungen verwendet werden, die nicht auf Schleifen beschränkt sind.

Codebeispiel:

weitermachen

rowLoop: // 这是外层循环的标签
for i, row := range array {
    
     // 外层循环
    for j, value := range row {
    
     // 内层循环
        if value <= threshold {
    
    
            continue rowLoop
        }
        fmt.Printf("Found: row %d, col %d\n", i, j)
        return
    }
}

// 输出:
// Row 0 start
// Row 0, Col 0
// Row 1 start
// Row 1, Col 0
// Row 2 start
// Row 2, Col 0

brechen

rowLoop: // 这是外层循环的标签
for i := 0; i < 3; i++ {
    
     // 外层循环
    fmt.Printf("Row %d start\n", i)
    for j := 0; j < 3; j++ {
    
     // 内层循环
        if j == 1 {
    
    
            break rowLoop
        }
        fmt.Printf("Row %d, Col %d\n", i, j)
    }
    fmt.Printf("Row %d end\n", i)
}

// 输出:
// Row 0 start
// Row 0, Col 0

gehe zu

for i := 0; i < 3; i++ {
    
     // 外层循环
	fmt.Printf("Row %d start\n", i)
	for j := 0; j < 3; j++ {
    
     // 内层循环
		if j == 1 {
    
    
			goto end
		}
		fmt.Printf("Row %d, Col %d\n", i, j)
	}
	fmt.Printf("Row %d end\n", i)
}

end: // 这是goto标签
	fmt.Println("Reached end label")
	
// 输出:
// Row 0 start
// Row 0, Col 0
// Reached end label

Supongo que te gusta

Origin blog.csdn.net/qq_35760825/article/details/132350243
Recomendado
Clasificación