如何在调用方法时更改包类型?

  • 本文关键字:包类型 类型 调用 方法 go
  • 更新时间 :
  • 英文 :


我在Go中有这个包

package dao
import (
"fmt"
"log"
)
type Product struct {
Name      string
Price     string
SalePrice string
ID        string
URL       string
}
var products []Product
func New(name string, price string, saleprice string, url string, id string) *Product {
return &Product{
Name:      name,
Price:     price,
SalePrice: saleprice,
URL:       url,
ID:        id,
}
}
func (p *Product) Add() {
products = append(products, p)
}

但是当我在main中使用它时。go,位于根级,我不能像这样调用p.Add()

p := dao.New("hello", "10", "20", "http", "id")
p.Add()

我得到的错误是这个cannot use p (type *Product) as type Product in append,当我检查产品内的类型。add()我得到*dao.Product

内主类型为product。乘积和非乘积。类型不同。我该如何处理呢?

您试图将指向struct的指针附加到Product的切片,而不是*Product的切片。快速解决方案是修改

var products []Product

var products []*Product

最新更新