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

6,590 阅读3分钟

Golang Example - Print values of Array or slice 在这些例子中,你将学习在Go语言中打印/显示arrayslice 元素到控制台的不同方法。

以下是所涉及的程序:

  • 使用带范围的For Loop打印数组
  • 使用PrintF函数格式显示片断
  • 数组切片的控制台打印,无方括号([])
  • 打印数组的地址或指针
  • 以二进制形式打印字节的片断

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

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

在下面的程序中:

声明了slicearray ,并使用了初始化值shorthand assignment operator.

对于一个有范围的循环,该表格用来迭代一个arrayslice.

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

以下是一个程序的代码print a slice using for loop in golang.

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函数显示数组或片状元素

在这个程序中,Arrayslice 被打印到控制台,使用fmt Printf function 与格式字符串。

用于显示数组或片断的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 function ,从输出中去掉方括号。并使用strings Trim() function ,对结果进行修剪。

下面是一个打印数组或片断到控制台的示例程序,没有方括号([])

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), "[]"))  
  
}  

输出:

one two three  
1 2 3 5 12  

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

在Golang中,创建一个数组或片断变量涉及到内存中的位置或地址。

要检查一个数组或片断的地址,我们必须使用&(安培尔)和数组/片断变量名
下面是一个打印数组指针的例子程序

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:以二进制比特形式打印数组或片的字节数

下面是打印来自ArraySlice 数据的二进制数据的一系列步骤。

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

输出:

0001100100000001  

结论

在本教程中,你学到了多个例子和方法,使用fmt printf for循环来迭代和显示数组和分片,并打印地址和字节。