முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 1 · பாடம் 2 இன் 5பாடத்திட்டத்தில் 2/50~10 min
தொகுதி பாடங்கள் (2/5)

பூஜ்ஜிய மதிப்பு மற்றும் வகை மாற்றங்கள்

Go இல் வெளிப்படையான மதிப்பு இல்லாமல் அறிவிக்கப்பட்ட ஒவ்வொரு மாறியும் a பெறுகிறது பூஜ்ஜிய மதிப்பு: அதன் வகையின் "நடுநிலை மதிப்பு". இது ஒரு பெரிய வித்தியாசம் JavaScript இலிருந்து, let x; undefined அல்லது C ஐ உருவாக்குகிறது, அங்கு நீங்கள் முடிவடையும் குப்பை நினைவகம் வரை. இல்லை undefined, UB இல்லை: பூஜ்ஜியம்.

பூஜ்ஜிய மதிப்பு அட்டவணை

வகைவகைபூஜ்ஜிய மதிப்பு
எண்int, int64, float32, float64, uint, ...0
பூலியன்boolfalse
சரம்string"" (வெற்று சரம்)
சுட்டி*Tnil
துண்டு / வரைபடம் / சேனல்[]T, map[K]V, chan Tnil
செயல்பாடு / இடைமுகம்func(...), interface{...}nil
கட்டமைப்புT struct{...}அனைத்து புலங்களும் அவற்றின் பூஜ்ஜிய மதிப்பில்
Go
var i int        // 0
var f float64    // 0
var s string     // ""
var b bool       // false
var p *int       // nil
var nums []int   // nil  (NB: una slice nil ha len 0 e si può iterare!)

மாற்றங்கள் எப்போதும் வெளிப்படையானவை

C, Python அல்லது JS போலல்லாமல், Go ** தானாகவே ஒன்றை விளம்பரப்படுத்தாது மற்றொன்றுக்கு எண் வகை: நீங்கள் type(value) என்று எழுத வேண்டும்.

Go
i := 42
var f float64 = float64(i)
var u uint = uint(i)

int மற்றும் int64 போன்ற "இணக்கமான" வகைகளுக்கும் இது பொருந்தும்: ஒரு வெளிப்படையான மாற்றம் எப்போதும் தேவைப்படுகிறது.

Go
var a int = 10
var b int64 = int64(a)  // obbligatorio

எண்களுக்கு இடையே மாற்றம்: துண்டிக்கப்படுவதைக் கவனியுங்கள்

float64 இலிருந்து int பூஜ்ஜியத்தை நோக்கி துண்டிக்கப்படுகிறது, இல்லை சுற்று:

Go
f := 3.9
i := int(f)   // 3, non 4
n := int(-3.9) // -3, non -4

சரம் ↔ எண் மாற்றம்

string(65) கொடுக்கவில்லை "65": இது "A" (குறியீடு கொண்ட ரூன் புள்ளி 65). சரம் → எண் மற்றும் நேர்மாறாக உங்களுக்கு strconv தேவை தொகுப்பு:

Go
import "strconv"

s := strconv.Itoa(42)        // "42"
n, err := strconv.Atoi("42") // 42, nil

Stdlib தொகுதியில் அதை ஆழமாகப் பார்ப்போம்.

உங்கள் முறை

உடற்பயிற்சி#go.m1.l2.e1
முயற்சிகள்: 0ஏற்றுகிறது…

int வகையின் மாறி கவுண்டரை துவக்காமல் அறிவித்து அச்சிடவும். எதிர்பார்க்கப்படுகிறது: 0.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

துவக்கி இல்லாமல் மாறி, வகையின் பூஜ்ஜிய மதிப்பை எடுக்கும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#go.m1.l2.e2
முயற்சிகள்: 0ஏற்றுகிறது…

முழு எண் n=10 கொடுக்கப்பட்டால், n ஐ float64 ஆக மாற்றி 4 ஆல் வகுக்கவும். முடிவை அச்சிடவும் (எதிர்பார்க்கப்படும் 2.5).

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

வெளிப்படையான மாற்றம் இல்லாமல், `n / 4` என்பது 2 ஐக் கொடுக்கும் ஒரு முழு எண் பிரிவாகும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

Quiz#go.m1.l2.e3
தயார்

இந்த குறியீடு என்ன அச்சிடுகிறது?

Go
f := 3.7
fmt.Println(int(f))
பதில் விருப்பங்கள்

மறுபரிசீலனை

  • ஒவ்வொரு வகைக்கும் சீரான பூஜ்ஜிய மதிப்பு உள்ளது: undefined இல்லை, UB இல்லை.
  • Slice/map/chan/func/interface/pointer இல் பூஜ்ஜிய மதிப்பு உள்ளது nil.
  • எண் மாற்றங்கள் எப்போதும் type(value) உடன் வெளிப்படையாக இருக்கும்.
  • int(float) பூஜ்ஜியத்தை நோக்கி துண்டிக்கப்படுகிறது; சுற்று உபயோகத்திற்கு math.Round.
  • சரம் ↔ எண்ணுக்கு strconv தொகுப்பைப் பயன்படுத்தவும் (நேரடியான நடிகர் அல்ல).