gorm array type data postgres

package main

import (
    "fmt"
    "gorm.io/driver/postgres"
    "gorm.io/gorm"
)

type Product struct {
    ID       uint
    Name     string
    Features pq.StringArray `gorm:"type:varchar(64)[]"`
}

var db *gorm.DB

func main() {
    dsn := "user=gorm password=gorm dbname=gorm port=9920 sslmode=disable TimeZone=Asia/Shanghai"
    var err error
    db, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
    if err != nil {
        panic("failed to connect to database")
    }

    err = db.AutoMigrate(&Product{})
    if err != nil {
        panic("failed to auto migrate")
    }

    p := Product{
        Name:     "Product 1",
        Features: []string{"Feature A", "Feature B", "Feature C"},
    }

    db.Create(&p)

    var retrievedProduct Product
    db.First(&retrievedProduct, "name = ?", "Product 1")

    fmt.Printf("Product ID: %d\n", retrievedProduct.ID)
    fmt.Printf("Product Name: %s\n", retrievedProduct.Name)
    fmt.Printf("Product Features: %v\n", retrievedProduct.Features)
}