切片循环

package main

import (
	"fmt"
	"strings"
)
//传入2个切片判断元素是否相等
func bsEqual(arr, brr []byte) bool {
	if len(arr) == len(brr) {
		for i := 0; i < len(arr); i++ {
			a, b := arr[i], brr[i]
			fmt.Println(a, b)
			if a == b {
				fmt.Println("元素相同")
			} else {
				return false
			}
		}
	}
	return false
}

//传入切片不够8位用0补齐
func Padding(originSlice []byte) []byte {
	for {
		old_num := float64(len(originSlice))
		// fmt.Println("入参数", old_num)
		value := old_num / float64(8)
		// fmt.Println("计算后参数", mew_num)
		f := fmt.Sprintf("%v", value) //str 1.125
		// fmt.Println(f, "str转换后判断是否有.")
		if strings.Contains(f, ".") {
			// fmt.Println("需要补位")
			originSlice = append(originSlice, 0)
			continue
		}
		return originSlice
	}
}

//传入padding切片返回原有切片
func UnPadding(paddedSlice []byte) []byte {
	count := len(paddedSlice) - 1
	for {
		if paddedSlice[count] == 0 {
			count -= 1
			continue
		} else {
			return paddedSlice[:count+1]
		}
	}

	//反转切片
	/*
		for i, j := 0, len(paddedSlice)-1; i < j; i, j = i+1, j-1 {
			paddedSlice[i], paddedSlice[j] = paddedSlice[j], paddedSlice[i]
		}
	
	// fmt.Println(paddedSlice)
	// return paddedSlice
}
*/

func main() {
	//1
	arr1 := []byte{1, 2, 3}
	brr := []byte{1, 2, 0}
	fmt.Println(bsEqual(arr1, brr))

	//2
	arr2 := []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
	fmt.Println(Padding(arr2))
	fmt.Println(UnPadding(Padding(arr2)))


}

 

posted @ 2022-08-29 18:43  NeilyoX  阅读(26)  评论(0)    收藏  举报