<prompt> Andika Golang REST API yenye ncha mbili: moja kwa ajili ya kuunda watumiaji wapya na jina la mtumiaji, barua pepe, na nenosiri na nyingine kwa kurejesha taarifa za mtumiaji kwa jina lao la mtumiaji. Hifadhi data ya mtumiaji katika hifadhidata ya MariaDB.  <response>: Ili kuunda API ya REST katika Golang yenye ncha mbili za kuunda watumiaji wapya na kurejesha maelezo ya mtumiaji, tutatumia vifurushi vifuatavyo:1. wavuhttp: Kwa kushughulikia maombi ya HTTP.2. github.comgo-sql-drivermysql: Kiendeshi cha MySQL cha kuunganisha kwenye hifadhidata ya MariaDB.3. usimbajijson: Kusimba na kusimbua data ya JSON.Kwanza, hebu tusanidi faili yetu ya main.go na tuingize vifurushi muhimu:nendakifurushi kikuukuagiza databasesqlusimbajijsonfmtnethttp_ github.comgo-sql-drivermysqlfunc main http.HandleFunctengeneza, createUserhttp.HandleFuncmtumiaji, getUserfmt.PrintlnSeva ilianza kwenye bandari 8080http.ListenAndServe:8080, hakunaSasa, hebu tufafanue muundo wa Mtumiaji na uunda kazi ya kuanzisha muunganisho wa hifadhidata:nendachapa muundo wa mtumiaji Kitambulisho int json:idMfuatano wa jina la mtumiaji json:jina la mtumiajiMfuatano wa barua pepe json:barua pepeMfuatano wa nenosiri json:nenosirivar db sql.DBfunc initDB kosa kosadb, err sql.Openmysql, username:passwordtcplocalhost:3306dbnameikiwa makosa ! nil hofuerr.ErrorBadilisha jina la mtumiaji, nenosiri, na dbname na kitambulisho chako halisi cha MariaDB na jina la hifadhidata.Ifuatayo, wacha tuunde mwisho wa createUser:nendafunc createUserw http.ResponseWriter, r http.Ombi ikiwa r.Method ! POST http.Kosaw, Njia batili ya ombi, http.StatusMethodNotAllowedkurudivar mtumiaji Mtumiajikosa : json.NewDecoderr.Body.Simbuamtumiajiikiwa makosa ! nil http.Errorw, err.Error, http.StatusBadRequestkurudistmt, err : db. TayarishaWEKA NDANI ya watumiajijina la mtumiaji, barua pepe, nenosiri VALUES?, ?, ?ikiwa makosa ! nil http.Errorw, err.Error, http.StatusInternalServerErrorkurudidefer stmt.Close_, err stmt.Execmtumiaji.Jina la mtumiaji, mtumiaji.Barua pepe, mtumiaji.Nenosiriikiwa makosa ! nil http.Errorw, err.Error, http.StatusInternalServerErrorkurudiw.WriteHeaderhttp.HaliImeundwaSasa wacha tuunde mwisho wa getUser:nendafunc getUserw http.ResponseWriter, r http.Ombi ikiwa r.Method ! GET http.Kosaw, Njia batili ya ombi, http.StatusMethodNotAllowedkurudijina la mtumiaji : r.URL.Query.Patajina la mtumiajikama jina la mtumiaji Hitilafu ya http.w, Jina la mtumiaji linahitajika, http.StatusBadRequestkurudivar mtumiaji Mtumiajierr : db.QueryRowCHAGUA kitambulisho, jina la mtumiaji, barua pepe KUTOKA kwa watumiaji WHERE username?, username.Changanuauser.ID, user.Jina la mtumiaji, user.Emailikiwa makosa ! nil ikiwa kosa sql.ErrNoRows Hitilafu ya http.w, Mtumiaji hajapatikana, http.StatusNotFound nyengine http.Errorw, err.Error, http.StatusInternalServerErrorkurudijson.NewEncoderw.EncodermtumiajiHatimaye, piga kazi ya initDB katika kazi kuu kabla ya kuanzisha seva:nendafunc main initDBahirisha db.Fungahttp.HandleFunctengeneza, createUserhttp.HandleFuncmtumiaji, getUserfmt.PrintlnSeva ilianza kwenye bandari 8080http.ListenAndServe:8080, hakunaKabla ya kuendesha msimbo, hakikisha kuwa umeunda jedwali linaloitwa watumiaji katika hifadhidata yako ya MariaDB iliyo na safu wima: kitambulisho INT AUTO_INCREMENT, jina la mtumiaji VARCHAR, barua pepe VARCHAR, na nenosiri VARCHAR.Sasa unaweza kuendesha msimbo na kujaribu API yako kwa kutumia zana kama vile curl au Postman. 