Golang 菜鳥教程

Golang 控制語句

Golang 函數(shù) & 方法

Golang 結構體

Golang 切片 & 數(shù)組

Golang 字符串(String)

Golang 指針

Golang 接口

Golang 并發(fā)

Golang 異常(Error)

Golang 其他雜項

Go 語言字符串(String)

在Go語言中,字符串不同于其他語言,如Java、c++、Python等。它是一個變寬字符序列,其中每個字符都用UTF-8編碼的一個或多個字節(jié)表示?;蛘邠Q句話說,字符串是任意字節(jié)(包括值為零的字節(jié))的不可變鏈,或者字符串是一個只讀字節(jié)片,字符串的字節(jié)可以使用UTF-8編碼在Unicode文本中表示。

由于采用UTF-8編碼,Golang字符串可以包含文本,文本是世界上任何語言的混合,而不會造成頁面的混亂和限制。通常,字符串用雙引號””引起來,如以下示例所示:

//如何創(chuàng)建字符串
package main 
  
import "fmt"
  
func main() { 
  
//創(chuàng)建并初始化
//帶有字符串的變量
//使用簡寫聲明
    My_value_1 := "Welcome to (cainiaoplus.com)"
  
    //使用var關鍵字
    var My_value_2 string 
    My_value_2 = "nhooo"
  
    //顯示字符串 
    fmt.Println("String 1: ", My_value_1) 
    fmt.Println("String 2: ", My_value_2) 
}

輸出:

String 1:  Welcome to (cainiaoplus.com)
String 2:  nhooo

注意:字符串可以為空,但不能為nil。

字符串字面量

在Go語言中,字符串字面量是通過兩種不同的方式創(chuàng)建的:

  • 使用雙引號(“”):在這里,字符串字面量使用雙引號(“”)創(chuàng)建。此類字符串支持轉義字符,如下表所示,但不跨越多行。這種類型的字符串文字在Golang程序中被廣泛使用。

    轉義符描述
    \\反斜杠(\)
    \000具有給定的3位8位八進制代碼點的Unicode字符
    \’單引號(')。僅允許在字符文字中使用
    \”雙引號("")。僅允許在解釋的字符串文字中使用
    \aASCII鈴聲(BEL)
    \bASCII退格鍵(BS)
    \fASCII換頁(FF)
    \nASCII換行符(LF)
    \rASCII回車(CR)
    \tASCII標簽(TAB)
    \uhhhh具有給定的4位16位十六進制代碼點的Unicode字符。

    具有給定的8位32位十六進制代碼點的Unicode字符。
    \vASCII垂直制表符(VT)
    \xhh具有給定的2位8位十六進制代碼點的Unicode字符。
  • 使用反引號(``):此處,字符串文字是使用反引號(``)創(chuàng)建的,也稱為raw literals(原始文本)。原始文本不支持轉義字符,可以跨越多行,并且可以包含除反引號之外的任何字符。通常,它用于在正則表達式和HTML中編寫多行消息。

    package main
    
    import "fmt"
    
    func main() {
    
        //創(chuàng)建并初始化
        //帶有字符串文字的變量
        //使用雙引號
        My_value_1 := "Welcome to nhooo"
    
        //添加轉義字符
        My_value_2 := "Welcome!\nnhooo"
    
        //使用反引號
        My_value_3 := `Hello!nhooo`
    
        //添加轉義字符
    
        //原始文本
        My_value_4 := `Hello!\nnhooo`
    
        //顯示
        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:  Welcome to nhooo
    String 2:  Welcome!
    nhooo
    String 3:  Hello!nhooo
    String 4:  Hello!\nnhooo

關于字符串的要點

  • 字符串是不可變的:在Go語言中,一旦創(chuàng)建了字符串,則字符串是不可變的,無法更改字符串的值。換句話說,字符串是只讀的。如果嘗試更改,則編譯器將引發(fā)錯誤。

    //字符串是不可變的
    package main 
      
    import "fmt"
      
    func main() { 
      
            //創(chuàng)建和初始化字符串
            //使用簡寫聲明
        mystr := "Welcome to nhooo"
      
        fmt.Println("String:", mystr) 
      
        /* 果你試圖改變字符串的值,編譯器將拋出一個錯誤,例如, 
         cannot assign to mystr[1] 
           mystr[1]= 'G' 
           fmt.Println("String:", mystr) 
        */
      
    }

    輸出:

    String: Welcome to nhooo
  • 如何遍歷字符串?:您可以使用for range循環(huán)遍歷字符串。此循環(huán)可以在Unicode代碼點上迭代一個字符串。

    語法:

    for index, chr:= range str{
         // 語句..
    }

    在這里,索引是存儲UTF-8編碼代碼點的第一個字節(jié)的變量,而chr是存儲給定字符串的字符的變量,str是字符串。

    //遍歷字符串
    //使用for范圍循環(huán)
    package main
    
    import "fmt"
    
    func main() {
    
        //字符串作為for循環(huán)中的范圍
        for index, s := range "nhooo" {
    
            fmt.Printf("%c 索引值是 %d\n", s, index)
        }
    }

    輸出:

    n 索引值是 0
    h 索引值是 1
    o 索引值是 2
    o 索引值是 3
    o 索引值是 4
  • 如何訪問字符串的單個字節(jié)?:字符串是一個字節(jié),因此,我們可以訪問給定字符串的每個字節(jié)。

    //訪問字符串的字節(jié)
    package main
    
    import "fmt"
    
    func main() {
    
        //創(chuàng)建和初始化一個字符串
        str := "Welcome to nhooo"
    
        //訪問給定字符串的字節(jié)
        for c := 0; c < len(str); c++ {
    
            fmt.Printf("\n字符 = %c 字節(jié) = %v", str[c], str[c])
        }
    }

    輸出:

    字符 = W 字節(jié) = 87
    字符 = e 字節(jié) = 101
    字符 = l 字節(jié) = 108
    字符 = c 字節(jié) = 99
    字符 = o 字節(jié) = 111
    字符 = m 字節(jié) = 109
    字符 = e 字節(jié) = 101
    字符 =   字節(jié) = 32
    字符 = t 字節(jié) = 116
    字符 = o 字節(jié) = 111
    字符 =   字節(jié) = 32
    字符 = n 字節(jié) = 110
    字符 = h 字節(jié) = 104
    字符 = o 字節(jié) = 111
    字符 = o 字節(jié) = 111
    字符 = o 字節(jié) = 111
  • 如何從切片創(chuàng)建字符串?:在Go語言中,允許您從字節(jié)切片創(chuàng)建字符串。

    //從切片創(chuàng)建一個字符串 
    package main 
      
    import "fmt"
      
    func main() { 
      
        //創(chuàng)建和初始化一個字節(jié)片
        myslice1 := []byte{0x47, 0x65, 0x65, 0x6b, 0x73} 
      
        //從切片創(chuàng)建字符串
        mystring1 := string(myslice1) 
      
        //顯示字符串
        fmt.Println("String 1: ", mystring1) 
      
        //創(chuàng)建和初始化一個符文切片 
        myslice2 := []rune{0x0047, 0x0065, 0x0065, 0x006b, 0x0073} 
      
        //從切片創(chuàng)建字符串
        mystring2 := string(myslice2) 
      
        //顯示字符串
        fmt.Println("String 2: ", mystring2) 
    }

    輸出:

    String 1:  Geeks
    String 2:  Geeks
  • 如何查找字符串的長度?:在Golang字符串中,可以使用兩個函數(shù)(一個是len(),另一個是RuneCountInString())來找到字符串的長度。UTF-8包提供了RuneCountInString()函數(shù),該函數(shù)返回字符串中存在的符文總數(shù)。len()函數(shù)返回字符串的字節(jié)數(shù)。

    //查找字符串的長度
    package main
    
    import (
        "fmt"
        "unicode/utf8"
    )
    
    func main() {
    
        //創(chuàng)建和初始化字符串
        //使用簡寫聲明
        mystr := "Welcome to nhooo ??????"
    
        //查找字符串的長度
        //使用len()函數(shù)
        length1 := len(mystr)
    
        //使用RuneCountInString()函數(shù)
        length2 := utf8.RuneCountInString(mystr)
    
        //顯示字符串的長度
        fmt.Println("string:", mystr)
        fmt.Println("Length 1:", length1)
        fmt.Println("Length 2:", length2)
    
    }

    輸出:

    string: Welcome to nhooo ??????
    Length 1: 31
    Length 2: 31
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清