1
查找可以在golang中聲明的集合的最大長度值我正在面對錯誤「panic:runtime error:makeslice:len out of range」,同時爲大值創建動態數組使用「make()」的長度。使用make()
例如。
arr := make([]int, length) //length is a dynamic value
我知道,這個問題已經在這裏提出(Maximum length of a slice in Go)。 但是,make方法不支持golang中「int」數據類型的最大值。它們根據(大小)struct類型消耗長度值。 是否有預定義的API可用於查找可以在golang中聲明的集合的最大長度值?
如:
maxInt := int(^uint(0) >> 1)
arr := make([]struct{}, maxInt-1) //accepted
arr := make([]int, maxInt-1) //throw error
@Volker對於你的問題,是的!這是可行的。 Golang使用函數maxSliceCap [go1.7/src/runtime/slice.go:32]驗證len和cap。有API來獲取運行時信息。雖然這可以通過使用延遲功能來捕獲恐慌並恢復,但我們可以使用一種簡單易用的API。問題是,是否有任何暴露的API會有所幫助。 – Spartan
@Spartan這只是_hard_ _upper_ _limits_!不能保證實際上將有足夠的空閒內存來分配此片。 _MaxMem不是實際可用的或甚至物理上存在的RAM。但你是對的:如果這是OP的問題,那我就糾正了。 – Volker