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
,当我检查 Product.Add() 中的类型时,我得到*dao.Product
.
main里面的类型是product.Product而不是product。类型不同。我该如何管理?
解决方案
您正在尝试将指向结构的指针附加到 Product 切片而不是 *Product 切片。快速的解决方案是改变
var products []Product
进入
var products []*Product
推荐阅读
- javascript - 如何创建精灵图像按钮并将其添加到 3D 画布?
- input - textarea 的多行插件
- kubernetes - 与依赖提供者一起改造
- linux - 描述 xmm 寄存器中未传递给 rax 的浮点参数数量的整数
- wordpress - 如何在某个日期之后显示某些内容?
- java - Android 通知打开多次而不是只打开一次
- linux - gcc 编译器 NULL 分配不分配 NULL
- r - 在 R 中创建地形图
- email - 将第二个电子邮件地址添加到 cc 字段的语法
- javascript - 将数据存储为 JSON 优于将其存储在 JavaScript 对象中的好处