首先来看一个示例,它在idea中会直接提示错误。
package main
import (
"fmt"
)
type Person struct {
Name string
Age int
Favourite []string
}
func main() {
person := Person{
"benben_2015",
18,
{"huoguo", "chuanchuan"},
}
fmt.Println(person)
}
上面代码在编辑器中会提示这样的错误:Reports composite literals with incompatible types and values。原因在于定义的Person结构体的Favourite字段的类型是字符串切片,但是在main函数中使用时,直接传入了一个结构体对象。两者的类型不相同,所以提示不兼容的类型。
对于一些复合数据类型,在使用时应该声明其类型信息,不然Go无法自动判别。因此上面的错误示例只需要改变person初始化时的类型声明即可。
func main() {
person := Person{
"benben_2015",
18,
[]string{"huoguo", "chuanchuan"},
}
}
博客通过一个在idea中报错的示例,指出定义的Person结构体Favourite字段类型为字符串切片,而main函数中传入结构体对象,因类型不同提示不兼容。强调对于复合数据类型,使用时应声明类型信息,改变初始化时的类型声明可解决问题。
4454

被折叠的 条评论
为什么被折叠?



