English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل الأساسيات Golang

تعليمات التحكم Golang

وظائف Golang & طرق

هياكل البيانات Golang

قطع وعدد Golang

نصوص Golang (String)

مؤشرات Golang

واجهات Golang

إنتاج Golang

استثنائات Golang (Error)

متنوعة من Golang

النص (String) بلغة Go

في لغة Go، تختلف النصوص عن لغات أخرى مثل Java، c++، Python، إلخ. إنها سلسلة من الحروف المتغيرة، حيث يتم التعبير عن كل حرف باستخدام بضعة بايتات من تشفير UTF-8. أو بمعنى آخر، النصوص هي سلسلة من البايتات غير القابلة للتغيير (بما في ذلك البايتات التي تحتوي على قيمة صفر) أو قطعة من بايتات فقط للقراءة، يمكن استخدامها لتعبير عن نص Unicode باستخدام تشفير UTF-8.

بسبب استخدام تشفير UTF-8، يمكن أن تحتوي نصوص Go على نصوص، النصوص هي خليط من أي لغة في العالم، دون أن تتسبب في فوضى أو قيود في الصفحة. عادة، يتم استخدامالعلامات المزدوجة””الضغط، كما هو موضح في الأمثلة التالية:

//كيفية إنشاء النصوص
package main 
  
import "fmt"
  
func main() { 
  
// إنشاء وتحديد القيمة
//م変 النصوص
//使用简写声明
    My_value_1 := "Welcome to oldtoolbag.com"
  
    //استخدام كلمة المفتاح var
    var My_value_2 string 
    My_value_2 = "w3codebox"
  
    //显示字符串 
    fmt.Println("String 1: ", My_value_1) 
    fmt.Println("String 2: ", My_value_2) 
}

输出:

String 1:    Welcome to oldtoolbag.com
String 2:    w3codebox

ملاحظة:يمكن أن تكون النصوص فارغة، لكنها لا يمكن أن تكون null.

نصوص حرفية

في لغة Go، يتم إنشاء نصوص حرفية بطرقين مختلفين:

  • استخدام العلامات المزدوجة (“”):في هذا السياق، يتم إنشاء نصوص الكتل باستخدام العلامات المزدوجة (""). تسمح هذه النصوص بحروف النقاط، مثل الجدول أدناه، ولكن لا تدعم التشابك عبر السطور. يتم استخدام هذا النوع من نصوص الكتل بشكل واسع في برمجيات Golang.

    المحولالوصف
    \\\الشرطة العكسية (\)
    \000حرف Unicode ب cod point ثماني من 8 حروف.
    \'العلامات الواحدة ('). يُسمح باستخدامها فقط في نصوص الكتل.
    \"العلامات المزدوجة (""). يُسمح باستخدامها فقط في نصوص الكتل المفسر.
    \aBell ASCII (BEL)
    \bBackspace ASCII (BS)
    \fPage Feed ASCII (FF)
    \nLine Feed ASCII (LF)
    \rCarriage Return ASCII (CR)
    \tTab ASCII (TAB)
    \uhhhhحرف Unicode ب cod point أربعة من 16 حرف.

    حرف Unicode ب cod point ثماني من 32 حرف.
    \vTab ASCII العمودي (VT)
    \xhhحرف Unicode ب cod point ثنائي من 8 حروف.
  • استخدام العلامة المزدوجة (``):في هذا السياق، يتم إنشاء نصوص الكتل باستخدام العلامات المزدوجة (``)، ويُطلق عليها أيضًاالنصوص الخام(النص الأصلي). النص الأصلي لا يدعم حروف النقاط، يمكنه التشابك عبر سطور، ويحتوي على أي حرف باستثناء العلامة المزدوجة. عادةً يتم استخدامه ل كتابة رسائل متعددة السطور في تعبيرات النصوص وHTML.

    package main
    import "fmt"
    func main() {
        // إنشاء وتحديد القيمة
        // متغيرات النصوص
        // استخدام العلامة المزدوجة
        My_value_1 := "مرحبًا بـw3codebox"
        // إضافة حروف النقاط
        My_value_2 := "مرحبًا!
    w3codebox"
        // استخدام العلامة المزدوجة
        My_value_3 := `مرحبًا!w3codebox`
        // إضافة حروف النقاط
        // النص الأصلي
        My_value_4 := `مرحبًا!
    w3codebox`
        // عرض
        fmt.Println("String 1: ", My_value_1)
        fmt.Println("String 2: ", My_value_2)
        fmt.Println("String 3: ", My_value_3)
        fmt.Println("String 4: ", My_value_4)
    }

    输出:

    String 1:  مرحبًا بـw3codebox
    String 2:  مرحبًا!
    w3codebox
    String 3:  مرحبًا!w3codebox
    String 4: Hello!
    w3codebox

نقاط حول الكلمة

  • الكلمة غير القابلة للتغيير:في لغة Go، بمجرد إنشاء كلمة، فإن الكلمة غير القابلة للتغيير، لا يمكن تغيير قيمة الكلمة. بمعنى آخر، الكلمة قابلة للقراءة فقط. إذا حاولت تغييرها، فإن الماكينير سيقوم بإطلاق خطأ.

    // الكلمة غير القابلة للتغيير
    package main 
      
    import "fmt"
      
    func main() { 
      
            //创建和初始化字符串
            //使用简写声明
        mystr := "Welcome to w3codebox"
      
        fmt.Println("String:", mystr) 
      
        /* إذا حاولت تغيير قيمة الكلمة، فإن الماكينير سيرفع خطأ، مثل، 
         cannot assign to mystr[1] 
           mystr[1]= 'G' 
           fmt.Println("String:", mystr) 
        */
      
    }

    输出:

    الكلمة: Welcome to w3codebox
  • كيفية مرور الكلمة؟:يمكنك استخدام دورة range لمرور الكلمة. يمكن لهذه الدورة مرور على رمز Unicode لكل كلمة.

    النحو:

    for index, chr := range str {
         // جملة...
    }

    في هذا السياق، المؤشر هو المغير الذي يحتوي على أول حرف من رمز UTF-8،chr هوالمغير الذي يحتوي على أحرف الكلمة المحددة، str هو كلمة.

    // مرور الكلمة
    // استخدام دورة range
    package main
    import "fmt"
    func main() {
        // الكلمة كنطاق في دورة for
        for index, s := range "w3codebox" {
            fmt.Printf("%c قيمة المؤشر هي %d\n", s, index)
        }
    }

    输出:

    n قيمة المؤشر هي 0
    h قيمة المؤشر هي 1
    o قيمة المؤشر هي 2
    o قيمة المؤشر هي 3
    o قيمة المؤشر هي 4
  • كيفية زيارة حرف منفرد في الكلمة؟السلسلة هي حرف، لذلك، يمكننا زيارة كل حرف من الكلمة المحددة.

    // زيارة أحرف الكلمة
    package main
    import "fmt"
    func main() {
        // إنشاء وتحديد كلمة
        str := "Welcome to w3codebox"
        // زيارة أحرف الكلمة
        for c := 0; c < len(str); c++ {
            fmt.Printf("\nالشخصية = %c الحرف = %v", str[c], str[c])
        }
    }

    输出:

    الشخصية = W الحرف = 87
    الشخصية = e الحرف = 101
    الشخصية = l الحرف = 108
    الشخصية = c الحرف = 99
    字符 = o 字节 = 111
    الشخصية = m الحرف = 109
    الشخصية = e الحرف = 101
    الشخصية = الحرف = 32
    الشخصية = t الحرف = 116
    字符 = o 字节 = 111
    الشخصية = الحرف = 32
    الشخصية = n الحرف = 110
    الشخصية = h الحرف = 104
    字符 = o 字节 = 111
    字符 = o 字节 = 111
    字符 = o 字节 = 111
  • 如何从切片创建字符串?:在Go语言中,允许您从字节切片创建字符串。

    //从切片创建一个字符串 
    package main 
      
    import "fmt"
      
    func main() { 
      
        //创建和初始化一个字节片
        myslice1 := []byte{0x47, 0x65, 0x65, 0x6b, 0x73} 
      
        //从切片创建字符串
        mystring1 := string(myslice1) 
      
        //显示字符串
        fmt.Println("String 1: ", mystring1) 
      
        //创建和初始化一个符文切片 
        myslice2 := []rune{0x0047, 0x0065, 0x0065, 0x006b, 0x0073} 
      
        //从切片创建字符串
        mystring2 := string(myslice2) 
      
        //显示字符串
        fmt.Println("String 2: ", mystring2) 
    }

    输出:

    String 1: Geeks
    String 2: Geeks
  • 如何查找字符串的长度?:在Golang字符串中,可以使用两个函数(一个是len()،另一个是RuneCountInString())来找到字符串的长度。UTF-8包提供了RuneCountInString()函数,该函数返回字符串中存在的符文总数。len()函数返回字符串的字节数。

    //查找字符串的长度
    package main
    import (
        "fmt"
        "unicode/utf8"
    )
    func main() {
        //创建和初始化字符串
        //使用简写声明
        mystr := "Welcome to w3codebox ??????"
        //查找字符串的长度
        //使用len()函数
        length1 := len(mystr)
        //使用RuneCountInString()函数
        length2 := utf8.RuneCountInString(mystr)
        //显示字符串的长度
        fmt.Println("string:", mystr)
        fmt.Println("Length 1:", length1)
        fmt.Println("Length 2:", length2)
    }

    输出:

    string: Welcome to w3codebox ?????
    Length 1: 31
    طول 2: 31