தொகுதி பாடங்கள் (1/5)
மேம்பட்ட `fmt`
fmt தொகுப்பு என்பது Go இல் உள்ள அனைத்து உரை I/O க்கும் நுழைவாயிலாகும். அதை நன்கு அறிவது என்பது படிக்கக்கூடிய பதிவுகள், தகவல் பிழைகள் மற்றும் வெளிப்புற நூலகங்களை நாடாமல் மதிப்புகளை வடிவமைத்தல் ஆகியவற்றை எழுதுவதாகும்.
நான்கு குடும்பங்கள்
fmt நான்கு குடும்பங்களில் செயல்பாடுகளை வெளிப்படுத்துகிறது, முன்னொட்டு மூலம் வேறுபடுகிறது:
Print*→os.Stdoutக்கு எழுதுகிறார் (Print,Println,Printf).Fprint*→ ஏதேனும்io.Writer(Fprintln(os.Stderr, ...),Fprintf(file, ...)) க்கு எழுதுகிறது.Sprint*→ அச்சிடாமல் சரத்தை வழங்கும் (Sprintf,Sprintln).Errorf→ வடிவமைக்கப்பட்டerror.
fmt.Println("hello") // stdout
fmt.Fprintln(os.Stderr, "boom") // stderr
s := fmt.Sprintf("[%d]", 42) // "[42]"
err := fmt.Errorf("parse %q: %w", in, base) // wrapped errorPrint மற்றும் Println இடையே உள்ள வித்தியாசம், வாதங்கள் மற்றும் புதிய வரிக்கு இடையே உள்ள *_ இடைவெளி மட்டுமே_: Println எப்போதும் \n ஐ சேர்க்கிறது, __AGYTOK_INLINE_TO வடிவத்தை பின்பற்றுகிறது.
முக்கிய வினைச்சொற்கள்
| வினை | அது என்ன செய்கிறது |
|---|---|
%v | இயல்புநிலை மதிப்பு (செயல்படுத்தப்பட்டால் String() அழைப்புகள்). |
%+v | புலம் பெயர்கள் உடன் கட்டமைக்கப்பட்டது. |
%#v | கோ தொடரியல் (பிழைத்திருத்தம் மற்றும் ஸ்னாப்ஷாட்களுக்குப் பயன்படும்). |
%T | மதிப்பின் டைனமிக் வகை. |
%d | அடிப்படை 10 இல் முழு எண். |
%b %o %x %X | பைனரி, ஆக்டல், ஹெக்ஸாடெசிமல் (சிறிய எழுத்து/பெரிய எழுத்து). |
%f %e %g | மிதக்கும் புள்ளி: நிலையான, அதிவேக, கச்சிதமான. |
%s | சரம் (அல்லது error/Stringer). |
%q | கோ-ஸ்டைல் மேற்கோள் சரம் (எஸ்கேப்ஸ் சேர்க்கப்பட்டுள்ளது). |
%c | யூனிகோட் எழுத்து (rune). |
%p | ஹெக்ஸாடெசிமலில் சுட்டி. |
%w | பிழை மடக்கு (Errorf உள்ளே மட்டும்). |
type Point struct{ X, Y int }
p := Point{1, 2}
fmt.Printf("%v\n", p) // {1 2}
fmt.Printf("%+v\n", p) // {X:1 Y:2}
fmt.Printf("%#v\n", p) // main.Point{X:1, Y:2}
fmt.Printf("%T\n", p) // main.Pointஅகலம், துல்லியம், கொடிகள்
எண் மற்றும் சரம் வினைச்சொற்கள் அகலம் மற்றும் துல்லிய ஆகியவற்றை ஏற்கின்றன:
%6d→ குறைந்தபட்ச அகலம் 6, இடைவெளிகளுடன் இடது திணிப்பு.%-6d→ அகலம் 6, வலது திணிப்பு (கொடி-).%06d→ அகலம் 6,0(கொடி0) உடன் திணிப்பு.%.2f→ துல்லியம் 2 தசம இலக்கங்கள்.%8.2f→ அகலம் 8, துல்லியம் 2.
fmt.Printf("|%6d|\n", 42) // | 42|
fmt.Printf("|%-6d|\n", 42) // |42 |
fmt.Printf("|%06d|\n", 42) // |000042|
fmt.Printf("|%8.2f|\n", 3.14)// | 3.14|சீரமைக்கப்பட்ட அட்டவணைகளுக்கு, உரை நெடுவரிசைகளுக்கான நிலையான அகலம் + %-...s என்பது text/tabwriter க்கு நகரும் முன் எளிமையான வடிவமாகும்.
%w மற்றும் பிழை மடக்குதல்
%w சிறப்பு: இது ** fmt.Errorf** க்குள் மட்டுமே இயங்குகிறது மற்றும் சங்கிலியில் உள்ள அசல் பிழையைப் பாதுகாக்கிறது, இதனால் errors.Is மற்றும் errors.As அதை நடக்க முடியும்.
if _, err := os.Open(path); err != nil {
return fmt.Errorf("read config %q: %w", path, err)
}%wக்குப் பதிலாக %v ஐப் பயன்படுத்தினால், பிழைச் செய்தியை அச்சிடுகிறது ஆனால் சங்கிலியை உடைக்கிறது: அவிழ்க்க வேண்டாம், இல்லை errors.Is. விதி: அழைப்பாளர் பிழையின் வகை அல்லது அடையாளத்தை வேறுபடுத்திப் பார்க்க விரும்பினால், %w ஐப் பயன்படுத்தவும் (Errorfக்கு ஒன்று மட்டுமே).
பயிற்சிகள்
முழு எண் 42 இலிருந்து '[42]' சரத்தை வடிவமைக்க fmt.Sprintf ஐப் பயன்படுத்தவும், பின்னர் அதை அச்சிடவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
%+v என்ற வினைச்சொல்லுடன் struct p ஐ அச்சிடவும் (அதில் புலப் பெயர்கள் இருக்க வேண்டும்).
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
fmt.Errorf இல் பயன்படுத்தப்படும் எந்த வினைச்சொல், பிழைகளுக்கான பிழைச் சங்கிலியைப் பாதுகாக்கிறது.Is/As?
err := fmt.Errorf("read %q: ???", path, base)