русский

Golang. Как найти нужный String ?

2 Tage zurück, 22:15
Re: Golang. Как найти нужный String ?
 
AlexNek патриот
AlexNek
in Antwort Феврунья 2 Tage zurück, 21:54, Zuletzt geändert 2 Tage zurück, 22:17 (AlexNek)

The error message "syntax error: non-declaration statement outside function body" in your Go program indicates that you are trying to execute statements outside of a function. In Go, executable code, such as reading a file (os.ReadFile) or unmarshaling JSON (json.Unmarshal), must reside within a function, most commonly func main().

Here's an explanation of the issue and the corrected code:

Reasoning for the Error
In Go, statements like file, _ := os.ReadFile("verbi.json") and json.Unmarshal(file, &verbi) are executable operations. These operations must be enclosed within a function block. Variables declared with var at the package level are declarations and are allowed outside functions, but their assignment or initialization with function calls must happen inside a function.

Corrected Code
To fix this, you need to move the file reading and JSON unmarshaling into the main function.

package main
import (
    "fmt"
    "encoding/json"
    "os"
)
var verbi map[string][][]string // This declaration is fine at package level
func main() {
    file, err := os.ReadFile("verbi.json")
    if err != nil {
        fmt.Println("Error reading file:", err)
        return
    }
    err = json.Unmarshal(file, &verbi)
    if err != nil {
        fmt.Println("Error unmarshaling JSON:", err)
        return
    }
    // You can now use the 'verbi' map here
    fmt.Println("Successfully loaded 'verbi' data.")
    // Example of accessing data (assuming structure)
    // for key, value := range verbi {
    //     fmt.Printf("Key: %s, Value: %v\n", key, value)
    // }
}

Explanation of Changes:

  • The file, _ := os.ReadFile("verbi.json") and json.Unmarshal(file, &verbi) lines are now placed inside the func main() {} block.
  • Error handling (if err != nil) has been added for both os.ReadFile and json.Unmarshal, which is a good practice in Go to gracefully handle potential issues like a missing file or malformed JSON.
  • The var verbi map[string][][]string declaration remains at the package level, making verbi a global variable accessible throughout your package, including within main.
 

Sprung zu