Go (שפת תכנות)

יש להשלים ערך זה: בערך זה חסר תוכן מהותי. ייתכן שתמצאו פירוט בדף השיחה.
הנכם מוזמנים להשלים את החלקים החסרים ולהסיר הודעה זו. שקלו ליצור כותרות לפרקים הדורשים השלמה, ולהעביר את התבנית אליהם.
יש להשלים ערך זה: בערך זה חסר תוכן מהותי. ייתכן שתמצאו פירוט בדף השיחה.
הנכם מוזמנים להשלים את החלקים החסרים ולהסיר הודעה זו. שקלו ליצור כותרות לפרקים הדורשים השלמה, ולהעביר את התבנית אליהם.
Go
פרדיגמות תכנות מובנה, concurrent computing, תכנות מונחה-עצמים, תכנות אימפרטיבי, תכנות פרוצדורלי, תכנות פונקציונלי עריכת הנתון בוויקינתונים
תאריך השקה 10 בנובמבר 2009 עריכת הנתון בוויקינתונים
מתכנן רוב פייק, קן תומפסון, רוברט גריזמר עריכת הנתון בוויקינתונים
מפתח חברת גוגל
הושפעה על ידי APL, C, מודולה־2, Newsqueak, BCPL, מודולה, Smalltalk, פסקל, אוברון-2, אוברון, לימבו, CSP, אקטיב אוברון, occam, בפסקה זו רשומה אחת נוספת שטרם תורגמה עריכת הנתון בוויקינתונים
רישיון רישיון BSD עריכת הנתון בוויקינתונים
סיומת ‎.go
go.dev
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית

Go היא שפת תכנות התומכת במובהק בעיבוד מקבילי ובעלת תמיכה חלקית בתכנות מונחה-עצמים, בעלת טיפוסיות סטטית ובטוחה, ויש לה תחביר הדומה לזה של שפת C. השפה מעוצבת על ידי חברת גוגל (ומכאן מקור שמה - שתי האותיות הראשונות בשם החברה) והמהדרים שלה מפותחים כפרויקט קוד פתוח[1]. העבודה על השפה החלה בספטמבר 2007, והיא הוכרזה רשמית בנובמבר 2009.

מספר יישומי מחשב שנכתבו תוך שימוש ב-Go לרבות Hugo, Datadog, Docker‏ וטרפורם.

מטרות

שפת Go מתוכננת לאפשר כתיבת תוכניות יעילות כמו שפות מקומפלות בעלות טיפוסים סטטיים, ומצד שני לאפשר את נוחות התכנות שנותנות השפות הדינמיות. מטרות נוספות שלה הן:

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

תכונות

תחביר השפה מבוסס על התחביר של שפת C - שימוש בסוגריים מסולסלים, מבני בקרה דומים והיעדר של מחלקות. בין ההבדלים בתחביר בינה לבין C ניתן להזכיר את היעדר הסוגריים במבני הבקרה, השימוש האופציונלי בנקודה ופסיק ומילות מפתח (למשל, go ו-select) שאינן קיימות בשפת C. התחביר של שפת גו הושפע גם לא מעט מהתחביר של שפת Python[2], ושאב ממנה תכונות כמו השמה מרובה, מחרוזת מרובת-שורות (multi-line string), האופן בו ניתן "לגזור" מקטעים ממערך או מחרוזת (למשל: "[2:12]str") ועוד.

הבדל בולט נוסף משפת C ודומותיה הוא סדר ההצהרה על משתנים ופרמטרים לפונקציות. ההצהרות להלן בשפת C:

int a, b;
int foo(int a, int b);

שקולות בקירוב להצהרות:

var a, b int
func foo(a, b int) int

סגנון הכתיבה מוגדר על ידי תוכנה (הנקראת fmt) המגדירה סגנון הזחות ורווחים אחיד באופן אוטומטי. לכל מזהה שהאות הראשונה שלו היא אות גדולה ניתן לגשת גם ממודולים נפרדים. סוגריים מסולסלים הפותחים בלוק של לולאה או תנאי חייבים להופיע באותה שורה כמו פקודת הלולאה או התנאי המתאימה (בניגוד להרגל של מתכנתים רבים בשפות ממשפחת ה-C). תכונה זו מסייעת לשמור על סגנון אחיד, מסייעת למהדר של השפה, ותקל על כתיבת מפרש לשפה.

השפה תומכת בפונקציות כערך - כלומר, ניתן להעביר פונקציות כפרמטרים, להחזיר פונקציות מפונקציות אחרות, ולבצע השמה של פונקציה אל משתנים. פונקציות בשפת GO הן סגור.

אין בשפה תמיכה במנגנון טיפול בחריגות בסגנון try..catch הקיים בשפות ++C, ג'אווה או #C. במקום זאת השפה מאפשרת החזרת מספר ערכים מפונקציה ושימוש במשתנה מסוג "error" המאפשר טיפול בחריגות בסגנון:

if value, err := someFunction(someVar);err!=nil{
 fmt.Println("there was an error calling 'somefunction' : %s ", err.Error())
}

וכן ישנו מנגנון panic עבור חריגות קשות, וכן מנגנון defer המגדיר פונקציות שריצתן תתבצע בסוף ריצת הפונקציה הנוכחית.

מערכת הטיפוסים

טיפוסים מובנים בשפה:

טיפוס מייצג סוגים גודל הערות דוגמה לליטרל
integer מספר שלם int8
int16
int32
int64
‏8 ביטים
16 ביטים
32 ביטים
64 ביטים
מספר שלם בייצוג משלים ל-2 24-
unsigned integer מספר טבעי uint8
uint16
uint32
uint64
‏8 ביטים
16 ביטים
32 ביטים
64 ביטים
מספר שלם בייצוג בינארי סטנדרטי 24
float מספר ממשי float32
float64
‏32 ביטים
64 ביטים
נקודה צפה על פי התקן המקובל 0.5
complex מספר מרוכב complex64
complex128
‏64 ביטים
128 ביטים
מספר מרוכב בייצוג נקודה צפה על פי התקן המקובל. החלק המדומה נכתב בעזרת האות i ‏ 12+5i
string מחרוזת string דינמי מחרוזת תווי יוניקוד ניתנת לשינוי (לא מערך) "hello"

תכנות מונחה עצמים

שפת GO איננה נחשבת שפה מונחית עצמים קלאסית[3] כמו שפות מודרניות אחרות כגון ++C,‏ #C‏ או Java, כיוון שאינה מנהלת היררכיה של עצמים, אך מאפשרת אנקפסולציה, ערכים מוטמעים[4] ,קומפוזיציה ותכונות רבות נוספות אשר מאפשרות תכנות מונחה עצמים בסגנון שונה[5], יש האומרים פשוט ונוח יותר[6].

מאפיינים כלליים

מאפייני מערכת הטיפוסים:

  • סטטית - כלומר, בדיקות נכונות מתבצעות בעיקר בזמן הידור, ולכל משתנה מוגדר טיפוס.
  • מפורשת למחצה - כלומר, טיפוס של משתנה מוצהר על פי רוב, אך ניתן להשמיט את ההצהרה באמצעות שימוש באופרטור =: המשלב הצהרה ואתחול, או להשמיט את שם הטיפוס, אם מבצעים אתחול מיד בהצהרה.
  • בטוחה - כלומר, לא ניתן לעקוף את מערכת הטיפוסים ולבצע השמה של ערך מטיפוס כלשהו אל משתנה מטיפוס השונה ממנו. כאשר יש צורך מתבצעת בדיקה בזמן ריצה לוודא את הטיפוס של אובייקט. מנגנוני איסוף הזבל והתבוננות פנימה בשפה מסייעים לכך.

ממשקים ותכנות גנרי

שפת GO מאפשרת למתכנת להגדיר "ממשק" - סט של חתימות של מתודות, ולכתוב פונקציות שיטפלו בכל טיפוס שהוא, בתנאי שהוא מממש סט מקביל של מתודות. סט כזה נקרא interface, והוא דומה במקצת ל-interface בשפת Java, אך בהבדל מהותי: אין כל צורך להצהיר במפורש אילו ממשקים מממש כל טיפוס.

ב-GO אין תמיכה בתכנות גנרי (נכון לגרסה 1.01), למעט בעזרת מנגנון interface - שנותן מענה עבור פונקציות או מתודות הניגשות אך ורק למתודות של הארגומנטים שלהן, אך לא עבור פונקציה כללית, כגון פונקציית Max המוצאת את האיבר הגדול ביותר במערך. עבור מבני נתונים כגון רשימה, מחסנית וכדומה, ניתן להשתמש בממשק ריק ({}interface) המקביל לשימוש ב-*void בשפת C, ולבצע המרה (הכוללת בדיקה אוטומטית בזמן ריצה) בעת הוצאת איברים ממבנה הנתונים. עם זאת, זהו מענה חלקי ואיננו גמיש כמו תבניות בשפת ++C או Generics בשפות #C וג'אווה, או בשפות מודרניות רבות אחרות. על פי אתר החברה[7]: ”תמיכה בתכנות גנרי תתווסף בשלב כלשהו. אנחנו לא מרגישים צורך דחוף בכך, אם כי אנו מבינים שישנם מתכנתים שכן חשים כך.”

תוכנית Hello world

תוכנית Hello world, דוגמת קוד הכותבת אל הפלט Hello world:

package main

func main() {
 Println("Hello, World")
}

להלן קוד עבור תוכנית מורכבת יותר, בדומה לפקודת echo בלינוקס:

package main

import (
"os"
 "flag" // command line option parser
)

var omitNewline = flag.Bool("n", false, "don't print final newline")

const (
 Space = " "
 Newline = "\n"
)

func main() {
 flag.Parse() // Scans the arg list and sets up flags
 var s string
 for i := 0; i < flag.NArg(); i++ {
 if i > 0 {
 s += Space
 }

 s += flag.Arg(i)
 }

 if !*omitNewline {
 s += Newline
 }

 os.Stdout.WriteString(s)
}

קישורים חיצוניים

הערות שוליים

  1. ^ Go, GitHub (באנגלית)
  2. ^ Google's Go: A New Programming Language That's Python Meets C++, TechCrunch (באנגלית)
  3. ^ Frequently Asked Questions (FAQ) - The Go Programming Language, go.dev
  4. ^ Effective Go - The Go Programming Language, go.dev
  5. ^ Is Go object oriented?, flaviocopes.com (באנגלית)
  6. ^ Composition over Inheritance in Go, odetocode.com
  7. ^ Frequently Asked Questions (FAQ)‎, באתר The Go Programming Language


Read other articles:

1992 single by Elton John The Last SongUK 7-inch coverSingle by Elton Johnfrom the album The One B-sideThe Man Who Never Died (remix)ReleasedOctober 1992Length3:21LabelRocketMCASongwriter(s)Elton JohnBernie TaupinProducer(s)Chris ThomasElton John singles chronology Runaway Train (1992) The Last Song (1992) Simple Life (1993) Music videoThe Last Song on YouTube The Last Song is a song by English musician Elton John, released as the third single from his 23rd studio album, The One (1992). It wa...

 

Artikel ini perlu dikembangkan agar dapat memenuhi kriteria sebagai entri Wikipedia.Bantulah untuk mengembangkan artikel ini. Jika tidak dikembangkan, artikel ini akan dihapus. Artikel ini tidak memiliki referensi atau sumber tepercaya sehingga isinya tidak bisa dipastikan. Tolong bantu perbaiki artikel ini dengan menambahkan referensi yang layak. Tulisan tanpa sumber dapat dipertanyakan dan dihapus sewaktu-waktu.Cari sumber: Politerowongan – berita · surat kabar �...

 

Об экономическом термине см. Первородный грех (экономика). ХристианствоБиблия Ветхий Завет Новый Завет Евангелие Десять заповедей Нагорная проповедь Апокрифы Бог, Троица Бог Отец Иисус Христос Святой Дух История христианства Апостолы Хронология христианства Ран�...

Cet article possède un paronyme, voir Patagonia (entreprise). Article connexe : Royaume d'Araucanie et de Patagonie. Patagonie (fr)Patagonia (es) Administration Statut politique Région géographique de l'Argentine et du Chili Gouvernement 5 provinces d'Argentine et 5 régions du Chili Démographie Population 4 296 239 hab. (2001-2002) Densité 4,3 hab./km2 Langue(s) Espagnol (castillan) Géographie Coordonnées 41° 48′ 37″ sud, 68° 54′&#...

 

Radio station in Atlanta This article is about WAFS AM 1190. For use of the WAFS call sign on 920 AM from 1989-2004, see WGKA § WAFS. WAFSAtlanta, GeorgiaBroadcast areaAtlanta metropolitan areaFrequency1190 kHzBrandingRelevant RadioProgrammingFormatCatholic talkAffiliationsRelevant RadioOwnershipOwnerRelevant Radio, Inc.HistoryFirst air date1956Former call signsWGKA (1956–2004)Former frequencies1600 kHz (1956–67)Technical informationFacility ID72111ClassDPower25,000 watts da...

 

Tom CollinsCocktailTypeMixed drinkBase spirit Gin ServedOn the rocks: dituangkan di atas esStandard garnishIrisan Lemon dan ceri maraschinoStandard drinkware Collins glassCommonly used ingredients 6 cL (2 US fl oz) Old Tom gin 25 cL (8,5 US fl oz) lemon juice 15 cL (5,1 US fl oz) sirup gula 5 cL (1,7 US fl oz) air soda PreparationCampur gin, jus lemon, dan sirup gula dalam gelas tinggi dengan es, tambahkan air sod...

Sumber referensi dari artikel ini belum dipastikan dan mungkin isinya tidak benar. Mohon periksa, kembangkan artikel ini, dan tambahkan sumber yang benar pada bagian yang diperlukan. (Pelajari cara dan kapan saatnya untuk menghapus pesan templat ini) SukasirnaDesaNegara IndonesiaProvinsiJawa BaratKabupatenCianjurKecamatanCampakamulyaKode Kemendagri32.03.25.2003 Luas817,132 HaJumlah penduduk5.087 orangKepadatan- Sukasirna adalah desa di kecamatan Campakamulya, Cianjur, Jawa Barat, Indones...

 

Сандро Боттичеллиитал. Sandro Botticelli Имя при рождении Алессандро ди Мариано ди Ванни Филипепи Псевдонимы di Mariano Filipepi, Alessandro Дата рождения около 1445[1][2] Место рождения Флоренция, Флорентийская республика[1][2] Дата смерти 17 мая 1510[3][4][…] Место смерт�...

 

City in Emilia-Romagna, Italy For the province, see Province of Reggio Emilia. For the educational method, see Reggio Emilia approach. For the basketball club, see Pallacanestro Reggiana. Comune in Emilia-Romagna, ItalyReggio Emilia Rèz (Emilian)ComuneComune di Reggio nell'EmiliaPiazza San Prospero in Reggio Emilia FlagCoat of armsLocation of Reggio Emilia Reggio EmiliaLocation of Reggio Emilia in ItalyShow map of ItalyReggio EmiliaReggio Emilia (Emilia-Romagna)Show map of Emilia-Romagn...

ХристианствоБиблия Ветхий Завет Новый Завет Евангелие Десять заповедей Нагорная проповедь Апокрифы Бог, Троица Бог Отец Иисус Христос Святой Дух История христианства Апостолы Хронология христианства Раннее христианство Гностическое христианство Вселенские соборы Н...

 

2005 single by Nelly featuring Jung Tru and King JacobErrtimeSingle by Nelly featuring Jung Tru and King Jacobfrom the album The Longest Yard: The Soundtrack ReleasedMarch 15, 2005Recorded2005GenreHip hopLength4:09LabelUniversal RecordsSongwriter(s)NellyJung TruKing JacobProducer(s)Jazze PhaNelly singles chronology 'N' Dey Say (2005) Errtime (2005) Fly Away (2005) Errtime (stands for Everytime) is a single by the rapper Nelly released in March 2005, from the soundtrack to the 2005 film, T...

 

Canadian-American actor of stage, film, and television Victor JoryJory in 1962Born(1902-11-23)November 23, 1902Dawson City, Yukon, CanadaDiedFebruary 12, 1982(1982-02-12) (aged 79)Santa Monica, California, U.S.OccupationActorYears active1930–1980Spouse Jean Inness ​ ​(m. 1928; died 1978)​Children2 Victor Jory (November 23, 1902 – February 12, 1982) was a Canadian-American actor of stage, film, and television.[1] He initiall...

Bronze and later copper coin used in Ancient Rome Ases redirects here. For the acronym ASES, see American Solar Energy Society. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: As Roman coin – news · newspapers · books · scholar · JSTOR (November 2008) (Learn how and when to remove this message) c. ...

 

Aleksandr MisurkinCosmonauta di RoscosmosNazionalità Russia StatusRitirato Data di nascita23 settembre 1977 Selezione2006 (TsPK 14) Primo lancio28 marzo 2013 Ultimo atterraggio20 dicembre 2021 Altre attivitàPilota Tempo nello spazio346 giorni, 7 ore e 4 minuti Numero EVA4 Durata EVA28h 14m Missioni Expedition 36 Expedition 35 Sojuz TMA-08M Sojuz MS-06 Expedition 53 Expedition 54 Sojuz MS-20 Data ritiro31 marzo 2022[1] Modifica dati su Wikidata · Manuale Aleksandr Aleksand...

 

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Composite structure diagram – news · newspapers · books · scholar · JSTOR (July 2008) (Learn how and when to remove this message) UML diagram types Structural UML diagrams Class diagram Component diagram Composite structure diagram Deployment diagram Object dia...

Aviation museum in Bull Creek, Western AustraliaAviation Heritage MuseumEstablished17 November 1979; 44 years ago (17 November 1979)LocationBull Creek, Western AustraliaCoordinates32°02′57″S 115°51′32″E / 32.0493°S 115.859°E / -32.0493; 115.859 (Aviation Heritage Museum)TypeAviation museumWebsiteaviationmuseumwa.org.au Western Australia Heritage RegisterOfficial nameAviation Heritage Museum of WAReference no.12166Assessed10 August...

 

Eastern Catholic church of the Byzantine Rite Not to be confused with the Ruthenian Uniate Church, a former Eastern Catholic body. This article is about the modern Ruthenian Greek Catholic Church. For the Eastern Catholic Church historically called Ruthenian, see Ukrainian Greek Catholic Church. Ruthenian Greek Catholic ChurchCathedral of St. John the Baptist in Munhall, PennsylvaniaClassificationEastern CatholicTheologyCatholic theologyPolityEpiscopalStructureMetropolitanatePopeFrancisPrimat...

 

This article's lead section may be too short to adequately summarize the key points. Please consider expanding the lead to provide an accessible overview of all important aspects of the article. (August 2023) The Trinity Cathedral of Troitse-Sergieva LavraPrimatePatriarch Kirill ILanguageChurch Slavonic (basic) and local languagesHeadquartersMoscow, RussiaFounderApostle Andrew, Vladimir of Kiev, Michael, 1st metropolitan of KievIndependence1448, de facto in the Metropolis of MoscowRecognitio...

خوسي مانويل فوينتي   معلومات شخصية اسم الولادة (بالإسبانية: José Manuel Fuente Lavandera)‏  الميلاد 30 سبتمبر 1945(1945-09-30)سييرو، أستورياس، إسبانيا الوفاة 18 يوليو 1996 (50 سنة)أوفييدو سبب الوفاة التهاب البنكرياس  الجنسية  إسبانيا الحياة العملية الدور دراج الفرق كاس  [لغات أخرى]&...

 

103 Masjid Agung Halte TransjakartaHalte Masjid Agung, 2022.LetakKotaJakarta SelatanDesa/kelurahanSelong, Kebayoran BaruKodepos12110AlamatJalan SisingamangarajaKoordinat6°14′07″S 106°47′54″E / 6.2352°S 106.7984°E / -6.2352; 106.7984Desain HalteStruktur BRT, median jalan bebas 1 tengah Pintu masukMelalui jembatan penyeberangan di depan Masjid Al-AzharGerbang tarifYaAksesFasilitas SepedaYa (Arah Kota)Informasi lainPemilikPT Transportasi JakartaNama...