示例:如何在Golang中使用IO包中的ReadAtLeast?

ReadAtLeast从r读取到buf,直到它至少读取了最小字节。当由于EOF而无法读取最小值时,它会返回特定错误以表示特定情况。
package main

import (
	"io"
	"fmt"
	"strings"
)

type Example struct {
	ReaderLength int
	Minimum  int
	TextStr  string
}

func main() {
	examples := []Example{
		{10, 5, "Go is a programming language created at Google in 2007."},
		{10, 10, "高朗"},
		{10, 00, "Robert Griesemer"},
		{10, 15, "Jobs, Code, Videos and News for Go hackers."},
	}
	for _, ex := range examples {
		rd := strings.NewReader(ex.TextStr)
		buffer := make([]byte, ex.ReaderLength)
		bytesRead, err := io.ReadAtLeast(rd, buffer, ex.Minimum)
		fmt.Printf("\nLen(buffer)=%d, Min=%d, BytesRead=%d, Error=%v, (%s)\n",ex.ReaderLength, ex.Minimum, bytesRead, err, ex.TextStr)
	}
}
C:\golang\codes>go run example10.go

Len(缓冲区)= 10,Min = 5,BytesRead = 10,Error =,(Go是Google在2007年创建的一种编程语言。)

Len(缓冲区)= 10,Min = 10,BytesRead = 6,Error =意外EOF,(Golang)

Len(缓冲区)= 10,Min = 0,BytesRead = 0,Error =,(罗伯特·格里塞梅尔)

Len(buffer)= 10,Min = 15,BytesRead = 0,Error = short buffer,(Go黑客的工作,代码,视频和新闻)。

C:\golang\codes>

您必须阅读的解决方案

Golang程序打印弗洛伊德三角形

如何在Golang中更改切片项的值?

要更改特定项目的值,请参考索引号。

GO程序检查阿姆斯特朗号

使用for ......循环使用go语言编写的简单程序,用于检查整数(由用户输入)是否为Armstrong数。 if ... else语句用于显示最终输出。

如何在Golang中使用append函数将项目添加到Slice?

要将项目添加到切片的末尾,请使用append()方法。

用于实现梳齿排序的Golang程序

梳齿排序是冒泡排序的一种变体。冒泡排序总是比较相邻的值。因此,所有反演都将一一删除。通过使用大小大于1的间隙,梳状排序在Bubble排序上有所改进。该间隙从一个大值开始,并且在每次迭代中缩小1.3倍,直到达到值1。因此,梳状排序使用一个来消除一个以上的反转计数交换并比气泡排序更好。

在Go中将Int数据类型转换为Float

此示例程序演示了如何创建多个goroutine,以及goroutine调度程序在三个逻辑处理器下的行为。

Go标准库在运行时包中具有一个称为GOMAXPROCS的函数,该函数使我们可以指定调度程序要使用的逻辑处理器的数量。

GO程序可生成多达一定数目的斐波那契数列

使用for循环和if条件生成前n个数字(由用户输入)的斐波那契数列的示例

转到程序以查找域的Forward(A)记录

net.LookupIP()函数接受一个字符串(域名)并返回包含主机的IPv4和IPv6地址的net.IP对象的切片。

用于实现ZigZag矩阵的Golang程序

绘制2D矩阵,以ZigZag顺序打印给定矩阵的所有元素。数字必须从0开始,然后以ZigZag格式增加,并且必须绘制一个正方形。考虑5 X 5是矩阵大小