我有一个名为arrTransaksi
的数组,它的子数组名为arrPembelian
,我想从该数组中删除所有数据,该如何操作?我正试着从那个数组中做一些统计
package main
import "fmt"
const NMAX = 1024
type barang struct {
nama, kategori string
hargaModal, hargaJual float64
stok, penjualan int
}
type transaksi struct {
tanggal string
idx int
pembelian arrPembelian
}
type pembelian struct {
barang string
jumlah int
}
type arrBarang [NMAX]barang
type arrTransaksi [NMAX]transaksi
type arrPembelian [NMAX]pembelian
func main() {
var perintah_main, perintah_barang, perintah_transaksi, n, i, m, tgl, brg int
var totalModal, totalPendapatan float64
var targetBarang, A, perintah_hapus_barang, targetTransaksi, targetTanggal string
var b arrBarang
var t arrTransaksi
clearScreen()
fmt.Print("PADA TANGGA BERAPA YANG INGIN DI HAPUS: ")
fmt.Scan(&targetTanggal)
CTT := cekTransaksiTanggal(t, n, targetTanggal)
if CTT >= 0 {
clearScreen()
for i := 0; i < t[CTT].idx; i++ {
fmt.Println(t[CTT].pembelian[i])
}
fmt.Scan(&perintah_hapus_barang)
if perintah_hapus_barang == "Y" {
hapusTransaksi(&t, &tgl, &m, CTT)
hapusBarangTransaksi(&t, CTT, &m)
}
}
}
func cekTransaksiBarang(t arrTransaksi, CTT int, target string) int {
for i := 0; i <= t[CTT].idx; i++ {
if target == t[CTT].pembelian[i].barang {
return i
}
}
return -1
}
func hapusTransaksi(t *arrTransaksi, tgl, m *int, target int) {
for i := target; i < *tgl; i++ {
t[i] = t[i+1]
*tgl--
}
}
func hapusBarangTransaksi(t *arrTransaksi, CTT int, m *int) {
for j := 0; j < *m; j++ {
t[CTT].pembelian[j] = t[CTT].pembelian[j+1]
*m--
}
}
我也有统计功能来查看该项目的统计信息
func statistics(b *arrBarang, t *arrTransaksi, n, m int, totalModal float64, totalPendapatan float64) {
fmt.Println("=======================| STATISTIK |========================")
fmt.Println("| |")
fmt.Println("| DATA MODAL DAN PENDAPATAN |")
fmt.Println("| |")
fmt.Println("============================================================")
for i := 0; i < n; i++ {
totalPendapatan += b[i].hargaJual * float64(b[i].penjualan)
}
fmt.Println("Total Modal: Rp.", totalModal)
fmt.Println("Total Pendapatan: Rp.", totalPendapatan)
fmt.Println("============================================================")
fmt.Println("| |")
fmt.Println("| [ 5 BARANG PALING BANYAK TERJUAL ] |")
fmt.Println("| |")
fmt.Println("============================================================")
shortingBarang(b, n)
// Display top 5
for i := 0; i < 5 && i < n; i++ {
fmt.Println(b[i].nama, "-", b[i].penjualan, "unit")
}
fmt.Println("============================================================")
fmt.Println("| TOKO KEREN |")
fmt.Println("============================================================")
fmt.Println(" TEKAN [X] UNTUK KEMBALI KE HALAMAN UTAMA ")
var A string
fmt.Scan(&A)
}
我已经运行了该程序,我试图运行hapusTransaksi
和hapusBarangTransaksi
来删除该数组中的特定值,它已经消失了,但统计数据仍然没有得到更新。
1条答案
按热度按时间c9qzyr3d1#
为什么不使用切片来代替数组呢?这允许擦除数据的简单方式:
如果必须使用array,则示例变为
然而,数组不是空的,它到处都包含他的类型零值。
希望能帮上忙。