דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. איך עובד struct tags בGO?

איך עובד struct tags בGO?

מתוזמן נעוץ נעול הועבר תכנות
11 פוסטים 3 כותבים 139 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • י מנותק
    י מנותק
    יוסף בן שמעון
    השיב לnigun ב נערך לאחרונה על ידי
    #2

    @nigun אתה שואל למה צריך את זה או איך משתמשים בזה?

    nigunN תגובה 1 תגובה אחרונה
    0
    • nigunN מנותק
      nigunN מנותק
      nigun
      השיב ליוסף בן שמעון ב נערך לאחרונה על ידי
      #3

      @יוסף-בן-שמעון
      איך זה עובד מאחורי הקלעים?
      אני משתמש בזה כרגע בלי להבין.

      מייל: nigun@duck.com

      yossizY תגובה 1 תגובה אחרונה
      0
      • yossizY מנותק
        yossizY מנותק
        yossiz
        השיב לnigun ב נערך לאחרונה על ידי yossiz
        #4

        @nigun ממה שאני מבין זה סתם חתיכת מטה דאטה שאתה יכול לשייך לשדה של struct.
        אפשר לכתוב שם מה שבא לך.
        יש גם חבילות שמשתמשות בתגים כדי לאפשר למתכנת להעביר לספרייה מידע אודות השדה. למשל חבילת encoding/json. ואז הם מצפים שהמטה דאטה יהיה בפורמט מסויים.
        אין כאן הרבה קסמים ✨ מאחורי הקלעים

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        nigunN תגובה 1 תגובה אחרונה
        1
        • nigunN מנותק
          nigunN מנותק
          nigun
          השיב לyossiz ב נערך לאחרונה על ידי
          #5

          @yossiz
          אז בא נקח את json.Unmarshal כדוגמא
          מה קורה מאחורי הקלעים?
          החבילה מחפשת את הערך שתואם לתווית
          ומוסיפה אותו לstruct
          ואם הערך לא קיים בסטרינג הוא פשוט לא מוסיף אותו?
          https://play.golang.org/p/raH8JBtmGfW

          מייל: nigun@duck.com

          yossizY תגובה 1 תגובה אחרונה
          0
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב לnigun ב נערך לאחרונה על ידי
            #6

            @nigun אמר באיך עובד struct tags בGO?:

            החבילה מחפשת את הערך שתואם לתווית
            ומוסיפה אותו לstruct
            ואם הערך לא קיים בסטרינג הוא פשוט לא מוסיף אותו?

            בדיוק

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            י תגובה 1 תגובה אחרונה
            1
            • י מנותק
              י מנותק
              יוסף בן שמעון
              השיב לyossiz ב נערך לאחרונה על ידי
              #7

              @yossiz אמר באיך עובד struct tags בGO?:

              בדיוק

              כמעט.
              הבעיה שאיתה צריך להתמודד בהמרה לJSON היא זו:
              המעצבים של גו החליטו על דרך מקורית להפריד בין נכסים ציבוריים של מחלקה\חבילה לנכסים פרטיים, כל נכס ששמו מתחיל באות גדולה הוא ציבורי, ובאות קטנה הוא פרטי. (נכס ציבורי - נכס שנגיש גם מחוץ למחלקה, נכס פרטי - נגיש רק לחברי המחלקה)
              נמצא שאם אבנה מבנה כזה:

              struct Person{
              	id int
              	firstName string
              }
              

              לא אוכל להמיר אותו למחרוזת בתקן JSON, כי לחבילה של ההמרה לא תהיה גישה לנכסים id firstName, והיא לא תדע על קיומם ועל הערכים שלהם.
              ואם אכריז עליהם ציבוריים:

              struct Person{
              	Id int
              	FirstName string
              }
              

              ואמיר אותם למחרוזת, אקבל מחרוזת כזו

              {Id:1, FirstName:"Moshe"}
              

              וזה לא יהיה תקין, כי המוסכמה של JSON היא camel case 🐫 שהאות הראשונה קטנה.
              בשביל זה מוסיפים לכל שדה הערה שמחילה ב json: וכשהחבילה ממירה את המבנה למחרוזת היא מחפשת האם קיימת הערה שנוגעת אליה, אם כן - היא לוקחת ממנה את ההוראות של שם הנכס ודרכי הטיפול בנכס, אחרת היא לא מתעלמת מהנכס לגמרי, היא נותנת לו את שם ברירת המחדל שלו, דהיינו השם שמתחיל באות גדולה.

              nigunN תגובה 1 תגובה אחרונה
              3
              • nigunN מנותק
                nigunN מנותק
                nigun
                השיב ליוסף בן שמעון ב נערך לאחרונה על ידי
                #8

                @יוסף-בן-שמעון
                יש גם את הפיצ'ר של omitempty
                שאם הערך ריק הוא לא מציג אותו בכלל, במקום להציג אותו כשהוא ריק.
                https://play.golang.org/p/hOahiVs2dv0

                מייל: nigun@duck.com

                י תגובה 1 תגובה אחרונה
                0
                • י מנותק
                  י מנותק
                  יוסף בן שמעון
                  השיב לnigun ב נערך לאחרונה על ידי
                  #9

                  @nigun יש גם אפשרות להשמיט את השדה בכל מצב על ידי -

                  nigunN תגובה 1 תגובה אחרונה
                  1
                  • nigunN מנותק
                    nigunN מנותק
                    nigun
                    השיב ליוסף בן שמעון ב נערך לאחרונה על ידי
                    #10

                    @יוסף-בן-שמעון
                    מה השימוש בזה?
                    אם אתה לא רוצה אל תכניס אותו לstruct (איך אומרים struct בעברית)

                    מייל: nigun@duck.com

                    תגובה 1 תגובה אחרונה
                    0
                    • nigunN מנותק
                      nigunN מנותק
                      nigun
                      כתב ב נערך לאחרונה על ידי
                      #11

                      אגב נתקלתי בתוסף
                      שמוסיף את כל התגיות באופן אוטומטי במקום לעשות העתק הדבק אינסופי
                      https://github.com/fatih/gomodifytags

                      מייל: nigun@duck.com

                      תגובה 1 תגובה אחרונה
                      0

                      בא תתחבר לדף היומי!
                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום