Golang语法错误:语句末尾出现意外的map

Golang语法错误:语句末尾出现意外的map 编译器报错:syntax error: unexpected map at end of statement
我哪里写错了?

func (book Book) GetInfo() map[string]string {
	new_map := make(map[string]string);
	new_map["title"] = book.title;
	new_map["author"] = book.author;
	new_map["subject"] = book.subject;
	new_map["id"] = fmt.Sprintf("%d", book.id);
	new_map["price"] = fmt.Sprintf("%d", book.price);

	if (book.availible) {
		new_map["availible"] = "true";
	} else {
		new_map["availible"] = "false";
	}

	return new_map;
}

更多关于Golang语法错误:语句末尾出现意外的map的实战教程也可以访问 https://www.itying.com/category-94-b0.html

5 回复

能否请您提供错误信息的行号,并告诉我们它指向您代码片段中的哪一行?

更多关于Golang语法错误:语句末尾出现意外的map的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这个。

func (book Book) GetInfo() map[string]string {

我认为问题是“”。这只能作为首字符使用,所以请将new_map改为newMap或其他不包含“”的名称…

你可能在方法定义前缺少了右大括号。例如,在这个可运行示例中,如果移除main函数的右大括号,就会出现同样的错误:

package main

import (
	"fmt"
)

type Book struct {
	title string
	author string
	subject string
	id int64
	price int64
	available bool
}


func main() {
	book := Book{
		title: "Title",
		author: "Author",
		subject: "Subject",
		id: 1,
		price: 99,
		available: true,
	}
	fmt.Printf("book: %+v\n", book.GetInfo())
}

func (book Book) GetInfo() map[string]string {
	new_map := make(map[string]string);
	new_map["title"] = book.title;
	new_map["author"] = book.author;
	new_map["subject"] = book.subject;
	new_map["id"] = fmt.Sprintf("%d", book.id);
	new_map["price"] = fmt.Sprintf("%d", book.price);

	if (book.available) {
		new_map["availible"] = "true";
	} else {
		new_map["availible"] = "false";
	}

	return new_map;
}

另外需要注意的是,在Go语言中除非在同一行有多个语句(这本身也不符合惯用写法),否则使用分号结束语句不是惯用做法。

这个错误通常是由于代码中缺少分号或括号不匹配导致的,但在你的代码中,问题可能在于条件语句的括号使用不当。在Go语言中,if语句的条件表达式不需要用括号括起来。

以下是修正后的代码:

func (book Book) GetInfo() map[string]string {
    new_map := make(map[string]string)
    new_map["title"] = book.title
    new_map["author"] = book.author
    new_map["subject"] = book.subject
    new_map["id"] = fmt.Sprintf("%d", book.id)
    new_map["price"] = fmt.Sprintf("%d", book.price)

    if book.availible {
        new_map["availible"] = "true"
    } else {
        new_map["availible"] = "false"
    }

    return new_map
}

主要修改:

  1. 移除了if语句条件表达式周围的括号
  2. 移除了所有语句末尾的分号(Go语言中分号是可选的,通常省略)

另外,我注意到代码中有拼写错误:availible 应该是 available,建议修正为:

    if book.available {
        new_map["available"] = "true"
    } else {
        new_map["available"] = "false"
    }

这样修改后,语法错误应该就会消失,函数能够正常编译和运行。

回到顶部