这是从片中稍微修改的代码
var buffer [256] byte
func SubtractOneFromLength(slice []byte) []byte {
slice = slice[0 : len(slice)-1]
return slice
}
func main() {
slice := buffer[10:20]
fmt.Println("Before: len(slice) =", len(slice))
newSlice := SubtractOneFromLength(slice)
fmt.Println("After: len(slice) =", len(slice))
fmt.Println("After: len(newSlice) =", len(newSlice))
newSlice2 := SubtractOneFromLength(newSlice)
fmt.Println("After: len(newSlice2) =", len(newSlice2))
}
它说切片参数的内容可以由函数修改,但其标头不能。如何在屏幕上打印newSlice2的标题?
切片标头由以下reflect.SliceHeader
类型表示:
type SliceHeader struct {
Data uintptr
Len int
Cap int
}
您可以使用package
unsafe
将切片指针转换为*reflect.SliceHeader
:
sh := (*reflect.SliceHeader)(unsafe.Pointer(&newSlice2))
然后,您可以像其他任何结构一样打印它:
fmt.Printf("%+v", sh)
输出将是(在Go Playground上尝试):
&{Data:1792106 Len:8 Cap:246}
这是来自切片的略微修改的代码 它表示slice参数的内容可以由函数修改,但其标头不能。如何在屏幕上打印newSlice2的标题?
问题内容: 如何检查两个切片是否相等? 问题答案: 您需要遍历切片中的每个元素并进行测试。未定义切片的相等性。但是,如果要比较type的值,则有一个函数。
如何检查两个切片是否相等?
我有过 我想要 在JS我可以做 作为许多类似这样的简单方法之一 围棋里有这样的东西吗?
问题内容: 我想编写一个确定子列表是否存在于较大列表中的函数。 有Python函数可以做到这一点吗? 问题答案: 如果您确定输入内容仅包含数字0和1,那么可以转换为字符串: 这样会创建两个字符串,因此它不是最有效的解决方案,但是由于它利用了Python中优化的字符串搜索算法,因此对于大多数用途而言可能已经足够好了。 如果效率非常重要,则可以查看适用于列表的Boyer- Moore 字符串搜索算法。
问题内容: 我想查询mysql数据库中的表以获取切片值: 但是我得到这个错误: 我怎样才能解决这个问题? 问题答案: sqlx为此提供了很好的帮助:在In()中,我们只需要使用args和Rebind准备查询,如下所示: 另外,我建议您在这里看看:http : //jmoiron.github.io/sqlx/有很多示例,包括 IN