在 Go 中,您可以按如下方式初始化字節(jié)切片(在 Go Playground 上嘗試)package mainimport (? ? "fmt"? ? "encoding/hex")// doStuff will be called many times in actual application, so we want this to be efficientfunc doStuff() {? ? transparentGif := []byte("GIF89a\x01\x00\x01\x00\x80\x00\x00\xff\xff\xff" +? ? ? ? "\xff\xff\xff\x21\xf9\x04\x01\x0a\x00\x01\x00\x2c\x00\x00\x00\x00" +? ? ? ? "\x01\x00\x01\x00\x00\x02\x02\x4c\x01\x00\x3b\x00")? ? // This will be returned by a web service in actuality, but here we just hex dump it? ??? ? fmt.Printf("Your gif is\n%s\n", hex.Dump(transparentGif))}func main() {? ? doStuff()}在這種情況下,數(shù)據(jù)不需要更改,因此將其初始化為常量,靠近實際使用的函數(shù)會更好(并且希望更有效)。然而,Go 中不存在 const 切片這樣的東西。有沒有更有效的方法來做到這一點,同時保持較小的范圍?理想情況下,串聯(lián)和內(nèi)存分配僅完成一次。據(jù)我所知,我必須在函數(shù)作用域之外創(chuàng)建切片,然后將其作為參數(shù)傳遞,即擴大作用域。
初始化不變字節(jié)片的最佳方法
婷婷同學(xué)_
2023-07-31 14:49:43