阅读量:1
在Go语言中,可以使用nil来表示空数组。具体实现如下:
package main import ( "fmt" ) type MyInterface interface { GetData() []int } type MyStruct struct { Data []int } func (s *MyStruct) GetData() []int { return s.Data } type MyEmptyStruct struct{} func (e *MyEmptyStruct) GetData() []int { return nil } func main() { var myInterface MyInterface myStruct := &MyStruct{ Data: []int{1, 2, 3}, } myEmptyStruct := &MyEmptyStruct{} myInterface = myStruct fmt.Println(myInterface.GetData()) // Output: [1 2 3] myInterface = myEmptyStruct fmt.Println(myInterface.GetData()) // Output: [] }
在上述代码中,定义了一个接口MyInterface
,其中包含一个GetData
方法,该方法返回一个int类型的数组。然后,定义了一个结构体MyStruct
和一个空结构体MyEmptyStruct
,它们都实现了GetData
方法。
在GetData
方法中,如果返回的是一个空数组,可以直接返回nil
。
在main
函数中,创建了一个MyStruct
类型的对象myStruct
,并将其赋值给myInterface
变量,然后通过myInterface.GetData()
调用GetData
方法并输出结果。
同样地,创建了一个MyEmptyStruct
类型的对象myEmptyStruct
,并将其赋值给myInterface
变量,再次通过myInterface.GetData()
调用GetData
方法并输出结果。此时,由于GetData
方法返回的是nil
,因此输出结果为空数组。