Paano Magtalaga ng Mga Default na Halaga para sa mga struct Field sa Golang?

Paano Magtalaga Ng Mga Default Na Halaga Para Sa Mga Struct Field Sa Golang



Ang Golang ay isang modernong programming language na naging popular sa mga nakaraang taon. Ang isa sa mga makapangyarihang tampok ng Golang ay ang kakayahang tukuyin at manipulahin ang mga istruktura. Mga istruktura ay mga uri ng data na tinukoy ng user na nagbibigay-daan sa mga developer na pagsama-samahin ang mga nauugnay na field ng data sa isang bagay. Sa Go, mga istruktura maaaring magkaroon mga default na halaga itinalaga sa kanilang mga field, na ginagawang mas madali ang pagsisimula sa kanila.

Sa sanaysay na ito, tutuklasin natin kung paano magtalaga ng a default na halaga para sa isang struct field sa Golang.

Ano ang Struct Fields?

Una, mahalagang maunawaan ang konsepto ng mga patlang ng istruktura . Ang mga patlang ng istruktura ay mga variable na pinagsama-sama upang bumuo ng a struct bagay. Ang bawat isa patlang ng istruktura may pangalan at uri ng data. Halimbawa, ang isang struct na kumakatawan sa isang tao ay maaaring may mga field gaya ng pangalan, edad, at kasarian.







Paano Magtalaga ng Mga Default na Halaga para sa Struct Field sa Golang?

Mga default na halaga maaaring italaga para sa mga patlang ng struct sa Go gamit ang:



  • Mga Default na Zero Value
  • Mga konstruktor
  • Mga Struct Literal
  • Mga Default na Value ng Field

1: Mga Default na Zero Value

Sa Go, ang pagtatalaga ng mga default na halaga sa mga struct field ay maaaring makamit gamit ang ' zero na halaga ” tampok. Ang tampok na ito ay awtomatikong nagtatalaga ng default na halaga ng alinman sa ' 0 'o' mali ” sa bawat hindi nasimulang field, depende sa uri ng data. Nangangahulugan ito na hindi mo kailangang tahasang magtakda ng mga default na halaga para sa bawat field sa struct, dahil gagawin ito ni Go para sa iyo.



Maaaring magamit ang feature na ito kapag nakikitungo sa malalaking struct na may maraming field, dahil nakakatipid ito ng oras at pagsisikap ng manu-manong pagtatakda ng mga default na value para sa bawat field.





Narito ang isang halimbawa na gumagamit ng zero na halaga upang magtalaga ng mga default na halaga para sa mga patlang ng struct:

pangunahing pakete

angkat 'fmt'

uri Istruktura ng tao {
Pangalan   string
Edad    int
Taas lumutang64
IsMale bool
}

func main ( ) {
p1 := Tao { Pangalan: 'John' , Edad: 30 }
fmt.Println ( p1.Pangalan )
fmt.Println ( p1.Edad )
fmt.Println ( p1.Taas )
fmt.Println ( p1.IsLalaki )
}

Ang code sa itaas ay tumutukoy sa isang Tao struct na may apat na field: Pangalan, Edad, Taas, at IsMale, na lahat ay nasa bool na uri ng data. Pagkatapos, gumawa kami ng bagong instance ng klase ng Tao, p1, at sinisimulan ang ilan sa mga field nito sa pamamagitan ng paggamit ng mga literal na struct upang tukuyin ang mga pangalan at value ng field. Ang mga default na zero value para sa mga patlang na hindi tahasang itinakda sa panahon ng pagsisimula ay ipinapakita kapag nai-print mo ang mga halaga ng mga patlang gamit ang fmt.Println .



Output

2: Mga Konstruktor

Sa pamamagitan ng pagsulat ng a tagabuo function para sa struct, maaari ka ring magbigay ng mga default na value sa struct field sa Golang. Ang tagabuo Ang function ay lumilikha ng bagong instance ng struct at nagtatakda ng mga default na value para sa mga field nito. Ang pamamaraang ito ay nakakatipid ng pagsisikap at oras, lalo na kapag nakikipag-ugnayan sa malalaking struct na may maraming field.

Narito ang isang halimbawa kung paano tukuyin ang a tagabuo function na may mga default na halaga ng field para sa isang struct:

pangunahing pakete

angkat 'fmt'

uri Istruktura ng tao {
Pangalan    string
Edad     int
String ng address
}
func NewPerson ( ) * Tao {
bumalik at Tao {
Pangalan: 'John Doe' ,
Edad: 30 ,
Address: '123 Main St' ,
}
}
func main ( ) {
p := Bagong Tao ( )
fmt.Println ( p.Pangalan, p.Edad, p.Address )
}

Sa code sa itaas, a Tao struct ay tinukoy, pati na rin ang newPerson() function, na gumagawa ng bagong instance ng Tao struct na may paunang natukoy na mga default. Tinatawag namin newPerson() sa pangunahing() para gumawa ng bagong Person instance na may default na mga halaga ng field , at pagkatapos ay i-print namin ang mga halaga ng mga field ng pagkakataong iyon.

Output

3: Struct Literal

Sa Golang, maaari kang magtakda ng mga default na halaga para sa mga patlang ng struct gamit struct literals din. Bumuo lang ng bagong instance ng struct at itakda ang mga value para sa bawat field na kailangang masimulan. Kung gusto mong magtakda ng mga default na halaga para sa mga field na hindi mo tahasang sinisimulan, maaari mong gamitin ang tampok na zero-value.

Narito ang isang halimbawa kung paano gamitin struct literals upang itakda ang mga default na halaga ng field para sa isang struct:

pangunahing pakete

angkat 'fmt'

uri Istruktura ng tao {
Pangalan    string
Edad     int
String ng address
}
func main ( ) {
p := Tao {
Pangalan: 'John Doe' ,
Edad: 30 ,
}
fmt.Println ( p.Pangalan, p.Edad, p.Address )
}

Sa code sa itaas, tinukoy namin ang a Tao struct sa halimbawang ito at lumikha ng bagong instance nito gamit ang literal na struct at mga default na halaga para sa mga field nito. Isang bago Tao instance ay nilikha sa main() na may ilang value ng field na na-populate at ang iba ay iniwang blangko. Mula noong Address hindi pinasimulan ang field, natatanggap nito ang walang laman na string na default na halaga para sa field na ito. Panghuli, ini-print namin ang mga value ng field ng Instance ng Tao.

Output

4: Mga Default na Value ng Field

Pagtatalaga mga default na halaga sa mga patlang ng istruktura sa Go ay isang direktang proseso. Ang default na halaga para sa isang struct field ay maaaring itakda gamit ang syntax fieldName:defaultValue . Halimbawa, isaalang-alang ang sumusunod na kahulugan ng istruktura:

uri Istruktura ng tao {
String ng pangalan
Edad int
String ng kasarian
}

Upang italaga mga default na halaga sa mga patlang ng struct na ito, maaari naming gamitin ang sumusunod na syntax:

p := Tao {
Pangalan: 'John Doe' ,
Edad: 30 ,
Kasarian: 'lalaki' ,
}

Sa halimbawa sa itaas, itinalaga namin mga default na halaga sa mga field ng Person struct. Kung aalisin namin ang alinman sa mga halaga sa panahon ng pagsisimula, ang default na halaga sa halip ay gagamitin. Halimbawa, kung magsisimula tayo ng object na Person tulad nito:

p := Tao {
Pangalan: 'Jane Doe' ,
}

Ang resultang Person object ay magkakaroon ng mga default na halaga para sa mga field na Edad at Kasarian, na 0 at isang walang laman na string, ayon sa pagkakabanggit.

Narito ang isang kumpletong code na naglalarawan sa proseso sa itaas:

pangunahing pakete
angkat 'fmt'

uri Istruktura ng tao {
Pangalan   string
Edad    int
String ng kasarian
}
func main ( ) {
p1 := Tao {
Pangalan: 'John Doe' ,
Edad: 30 ,
Kasarian: 'lalaki' ,
}
fmt.Println ( p1 )

p2 := Tao {
Pangalan: 'Jeremy' ,
}
fmt.Println ( p2 )
}

Sa halimbawa sa itaas, bumuo kami ng isang Person struct na may tatlong field: Pangalan, isang int na kumakatawan sa edad, at Kasarian, isang string na kumakatawan sa kasarian. Ang struct initialization syntax ay ginamit upang bumuo ng dalawang Person instance, p1 at p2. Ang p1 ay pinasimulan ng mga value na 'John Doe' para sa Pangalan, '30' para sa Edad, at 'Lalaki' para sa Kasarian, na lahat ng mga halaga ay hayagang ibinigay. Dahil hindi kami nagbigay ng mga halaga para sa Edad at Kasarian, ang mga default na halaga ng 0 at isang walang laman na string, ayon sa pagkakabanggit, ay itatalaga sa kanila. Ang p2 ay paunang sinisimulan na may ibinigay lamang na field na Pangalan.

Output

Konklusyon

Pagtatalaga mga default na halaga sa Go ay isang mahalagang aspeto ng programming gamit ang wikang ito. Nakakatulong ito upang matiyak na ang bawat struct instance na nilikha ay may default na data na nakatalaga dito. Sa pamamagitan ng paggamit ng alinman sa mga pamamaraan na ipinaliwanag sa itaas, maaaring itakda ng mga developer ang mga default na halaga ng mga struct field nang mahusay.