<prompt> Andika programu ya Golang inayounganishwa na hifadhidata ya MariaDB, huunda jedwali linaloitwa bidhaa na safu wima za kitambulisho cha bidhaa, jina, bei, na wingi, na kufanya shughuli za CRUD kwenye jedwali kupitia ingizo la mtumiaji.  <response>: Hapa kuna programu ya Golang inayounganishwa na hifadhidata ya MariaDB, inaunda jedwali inayoitwa bidhaa, na kufanya shughuli za CRUD kwenye jedwali kupitia ingizo la mtumiaji:nendakifurushi kikuukuagiza databasesqlfmtlogios_ github.comgo-sql-drivermysqlaina ya muundo wa bidhaa ID inMfuatano wa jinaBei ya kuelea64Kiasi intfunc main db, err : sql.Openmysql, username:passwordtcplocalhost:3306dbnameikiwa makosa ! nil log.Fatalhitilafuahirisha db.Fungamakosa createTabledbikiwa makosa ! nil log.Fatalhitilafukwa fmt.PrintlnnChagua operesheni:fmt.Println1. Unda bidhaafmt.Println2. Soma bidhaafmt.Println3. Sasisha bidhaafmt.Println4. Futa bidhaafmt.Println5. Tokavar uchaguzi intfmt.Changanuachaguobadilisha chaguo kesi 1:makosa createProductdbkesi 2:makosa readProductsdbkesi 3:makosa updateProductdbkesi 4:makosa deleteProductdbkesi 5:os.Toka0chaguo-msingi:fmt.PrintlnChaguo batili.endeleaikiwa makosa ! nil log.Fatalhitilafufunc createTabledb sql.DB kosa swala : UNDA JEDWALI IKIWA HAIPO bidhaa kitambulisho INT AUTO_INCREMENT,jina VARCHAR255 SI UFUPI,bei DECIMAL10, 2 SIO BATILI,wingi INT NOT NULL,UFUNGUO WA MSINGI id;_, kosa : db.Exechojakurudi makosakosa la func createProductdb sql.DB var p Bidhaafmt.PrintIngiza jina la bidhaa: fmt.Scanp.Namefmt.PrintIngiza bei ya bidhaa: fmt.Scanp.Beifmt.PrintIngiza wingi wa bidhaa: fmt.Scanp.Quantityquery : INGIZA KWENYE bidhaa jina, bei, kiasi THAMANI ?, ?, ?_, kosa : db.Execswali, p.Name, p.Bei, p.Wingiikiwa makosa nil fmt.PrintlnBidhaa imeundwa kwa mafanikio.kurudi makosakosa la func readProductsdb sql.DB safu mlalo, kosa : db.QueryCHAGUA kitambulisho, jina, bei, kiasi KUTOKA kwa bidhaaikiwa makosa ! nil kurudi makosaahirisha safu.Fungafmt.Printfn-5s -20s -10s sn, Kitambulisho, Jina, Bei, Wingikwa safu.Next var p Bidhaamakosa safu.Changanuap.ID, p.Name, p.Bei, p.Quantityikiwa makosa ! nil kurudi makosafmt.Printf-5d -20s -10.2f dn, p.ID, p.Name, p.Price, p.Quantityrudisha safu.Errfunc updateProductdb sql.DB kosa var p Bidhaafmt.PrintIngiza kitambulisho cha bidhaa ili kusasisha: fmt.Scanp.IDfmt.PrintIngiza jina jipya la bidhaa: fmt.Scanp.Namefmt.PrintIngiza bei mpya ya bidhaa: fmt.Scanp.Beifmt.PrintIngiza wingi wa bidhaa mpya: fmt.Scanp.Quantityquery : SASISHA bidhaa SET name?, price?, quantity? WHERE id?tokeo, kosa : db.Exechoja, p.Name, p.Bei, p.Wingi, p.IDikiwa makosa nil rowsAffected, _ : result.RowsAffectedikiwa safu zimeathirika 0 fmt.PrintlnHakuna bidhaa iliyopatikana na kitambulisho kilichotolewa. nyengine fmt.PrintlnBidhaa imesasishwa kwa mafanikio.kurudi makosakosa la func deleteProductdb sql.DB var id intfmt.PrintIngiza kitambulisho cha bidhaa ili kufuta: fmt.Scanidquery : FUTA KUTOKA KWA bidhaa WAPI id?matokeo, makosa : db.Exechoja, kitambulishoikiwa makosa nil rowsAffected, _ : result.RowsAffectedikiwa safu zimeathirika 0 fmt.PrintlnHakuna bidhaa iliyopatikana na kitambulisho kilichotolewa. nyengine fmt.PrintlnBidhaa imefutwa kwa mafanikio.kurudi makosaKabla ya kuendesha programu hii, hakikisha kuwa umesakinisha seva ya MariaDB na kuunda hifadhidata. Badilisha jina la mtumiaji, nenosiri, na dbname katika kamba ya unganisho na jina lako halisi la mtumiaji, nenosiri na jina la hifadhidata.Ili kuendesha programu, kwanza sakinisha kifurushi kinachohitajika:shnenda upate -u github.comgo-sql-drivermysqlKisha kukusanya na kuendesha programu:shkwenda kujenga main.go.kuuProgramu itakuhimiza kuchagua operesheni unda, kusoma, kusasisha, au kufuta. Fuata mawaidha ili kufanya shughuli za CRUD kwenye jedwali la bidhaa. 