Golang示例-打印数组或片断的值教程

497 阅读3分钟

在这个例子中,你将学会用Go语言向控制台打印/显示数组或片断元素的不同方法。包括以下程序

  • 使用带范围的For Loop打印数组
  • 使用PrintF函数格式显示片断
  • 阵列片的控制台打印,不含方括号
  • 打印数组的地址或指针
  • 以二进制形式打印字节的片断

为了理解这个例子,你应该具备Go语言的以下特点

示例程序。使用带范围的For循环打印一个数组或片断

在下面的程序中,使用速记赋值运算符声明了片和数组的初始值。

带范围的For循环被用来遍历数组或片断的元素。

每次迭代都有一个值,并使用Printf函数的格式化选项(int为%d,string为%s)将这些值打印到控制台。

package main  
import "fmt"  
  
func main() {  
  
 slice := []int{1, 2, 3}  
 array := [5]string{"one", "two", "three", "four", "five"}  
  
 for _, value := range slice {  
  fmt.Printf("%d\n", value)  
 }  
 for _, str := range array {  
  fmt.Printf("%s\n", str)  
 }  
}  

上述程序的输出是

1  
2  
3  
one  
two  
three  
four  
five  

示例程序2:使用Printf函数显示数组或片断的元素

在这个程序中,使用带有格式字符串的fmt Printf函数将数组或片断打印到控制台
Printf显示数组或片断的格式字符串
例如,数组或片断包含{"一"、"二"、"三"},我们将看到不同的打印值方式

  • %v - 默认格式的值,即[一二三]。
  • %+v - 默认格式的值+显示数字的符号 - [一二三] 。
  • %#v - Go风格的数据值 - []string{"一", "二", "三"}。
  • %+q - 对于数字,显示ASCII码 - ['\x01' '\x02' '\x03' '\x05' '\f'], 其他默认格式 - ["一" "二" "三"]

下面是一个显示数组或片断值到控制台的例子

package main  
import "fmt"  
  
func main() {  
 sliceStrings := []string{"one", "two", "three"}  
 arrayInt := [5]int{1, 2, 3, 5, 12}  
  
 // Print slice to console  
 fmt.Printf("%v\n", sliceStrings)  
 fmt.Printf("%+v\n", sliceStrings)  
 fmt.Printf("%#v\n", sliceStrings)  
 fmt.Printf("%+q\n", sliceStrings)  
 // Print array to console  
 fmt.Printf("%v\n", arrayInt)  
 fmt.Printf("%+v\n", arrayInt)  
 fmt.Printf("%#v\n", arrayInt)  
 fmt.Printf("%+q\n", arrayInt)  
  
}  

输出是

[one two three]  
[one two three]  
[]string{"one", "two", "three"}  
["one" "two" "three"]  
[1 2 3 5 12]  
[1 2 3 5 12]  
[5]int{1, 2, 3, 5, 12}  
['\x01' '\x02' '\x03' '\x05' '\f']  

示例程序3:打印数组或片断,不加括号

正如你所看到的,在上面的程序中,打印数组或片断到控制台时含有方括号。要去除方括号,我们必须使用fmt.Sprint函数去除方括号,并使用strings Trim()函数对结果进行修剪。

下面是一个删除数组或片断打印中的方括号的示例程序

package main  
import (  
 "fmt"  
 "strings"  
)  
  
func main() {  
 sliceStrings := []string{"one", "two", "three"}  
 arrayInt := [5]int{1, 2, 3, 5, 12}  
  
 // Print slice without squrebrackets to console  
 fmt.Println(strings.Trim(fmt.Sprint(sliceStrings), "[]"))  
  
 // Print array without squrebrackets to console  
 fmt.Println(strings.Trim(fmt.Sprint(arrayInt), "[]"))  
  
}  

示例程序4 打印数组/片的地址或指针

创建数组或片断变量涉及到内存中的位置或地址。
为了检查数组或切片的地址,我们必须使用&(ampersand)和数组/切片变量名称
下面是一个打印指针的示例程序

package main  
  
import (  
 "fmt"  
)  
  
func main() {  
 sliceStrings := []string{"one", "two", "three"}  
 arrayInt := [5]int{1, 2, 3, 5, 12}  
 fmt.Printf("Pointer or address of slice %p add array %p \n", &sliceStrings, &arrayInt)  
  
}  

输出是

Pointer or address of slice 0xc00004a400 add array 0xc000076030  

示例程序5 以二进制比特的形式打印数组或片的字节数

下面是打印数组或片状数据的二进制数据的步骤顺序

  • 声明字节片
  • 使用for循环 使用%08b格式的Printf打印二进制形式的数据
package main  
import (  
 "fmt"  
)  
  
func main() {  
  
 byteArray := []byte{25, 1}  
 for _, value := range byteArray {  
  fmt.Printf("%08b", value)  
 }  
  
}