Golang 实现字符串不可变性

Golang 实现字符串不可变性

默认情况下,Go中字符串是不可变的。一旦创建了一个字符串,就无法更改它。如果尝试更改字符串的值,将出现编译时错误。因此,不需要添加任何更多的逻辑来使其不可变。让我们看看执行的过程。下面我们将学习使用Go编程中的不同技术实现字符串的不可变性。

步骤

  • 步骤1 - 创建一个main包,并在该程序中声明fmt(格式化包)包,其中main生成可执行代码,fmt用于格式化输入和输出。

  • 步骤2 - 创建一个main函数,并在该函数中初始化一个字符串并赋予某个值。

  • 步骤3 - 更改字符串值的引用,并使用fmt.Println()函数将其打印到屏幕上,其中ln表示新行。

  • 步骤4 - 在这里,我们无法更改原始字符串,但可以修改其引用。

示例1

在此示例中,我们将看到如何使用字符串字面量使字符串不可变。输出将是使用fmt.Println()函数打印在屏幕上的字符串值,该函数是Golang中的打印函数。

package main
import "fmt"
func main() {
   // Create an immutable string
   var str_val = "Hello, World!"
   str_val = "Cannot change this string" // string reference is given here
   fmt.Println("The string presented here is:")
   fmt.Println(str_val) //print the string value
}

输出

The string presented here is:
Cannot change this string

示例2

使用 bytes.Buffer 包在示例中使字符串不可变的 Golang 程序

package main
import (
   "bytes"
   "fmt"
)
func main() {
   var buffer bytes.Buffer
   buffer.WriteString("Hello, World!") //add string to the buffer
   val := buffer.String() //store the buffer string in val
   fmt.Println("The string presented here is:")
   fmt.Println(val) //print string on the console
   buffer.WriteString("Cannot change this string")
}

输出

The string presented here is:
Hello, World!

示例3

在这个示例中,我们将看到如何修改字符串的引用,但不修改原始字符串。我们将使用Golang的print语句将字符串连接起来并打印到屏幕上。

package main
import "fmt"
func main() {
   str := "hello" // create string
   fmt.Println("The original string is:", str)
   str = str + " world" //concatenation
   fmt.Println("The reference string in which new string concatenated is:")
   fmt.Println(str) // prints "hello world"
   // str is still "hello"
}

输出

The original string is: hello
The reference string in which new string concatenated is:
hello world

示例4

在这个示例中,我们将看到如何使用字节数组使字符串成为不可变,并将其转换回字符串。输出字符串将打印在屏幕上。

package main
import "fmt"
func main() {
   byte_val := []byte("hello") //create byte slice
   byte_val[0] = 'E' //modify 0th value
   str := string(byte_val) //cast it to string
   fmt.Println("The immutability of string is presented as:")
   fmt.Println(str) // print the string on console
}

输出

The immutability of string is presented as:
Eello

结论

我们在设置中使用了4个示例来执行使字符串不可变的程序。在第一个示例中,我们使用字符串常量来创建字符串,然后修改它。在第二个示例中,我们使用bytes.Buffer包来使字符串不可变。在第三个示例中,我们拼接了新值,在第四个示例中,我们使用了字节切片并将其转换为字符串。因此,程序成功执行。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程