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 {
你可能在方法定义前缺少了右大括号。例如,在这个可运行示例中,如果移除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
}
主要修改:
- 移除了
if语句条件表达式周围的括号 - 移除了所有语句末尾的分号(Go语言中分号是可选的,通常省略)
另外,我注意到代码中有拼写错误:availible 应该是 available,建议修正为:
if book.available {
new_map["available"] = "true"
} else {
new_map["available"] = "false"
}
这样修改后,语法错误应该就会消失,函数能够正常编译和运行。


