Leave a Comment
How go code is being compiled to assembler code
https://go.godbolt.org/z/31FyJ3
I was interested in comparing line 15 vs line 17 of the following code:
package main
import "fmt"
type kv struct {
key []byte
value []byte
}
type sliceMap []kv
func (sm *sliceMap) Add(k, v []byte) {
kvs := *sm
if cap(kvs) > len(kvs) {
kvs = kvs[:len(kvs)+1]
} else {
kvs = append(kvs, kv{})
}
kv := &kvs[len(kvs)-1]
kv.key = append(kv.key[:0], k...)
kv.value = append(kv.value[:0], v...)
*sm = kvs
}
func main() {
sm := sliceMap{}
sm.Add([]byte("foo"), []byte("bar"))
fmt.Println(sm)
}
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.