Передача slice в функцию, открытие и вопрос.

834 views
Skip to first unread message

Gerasim

unread,
Nov 15, 2014, 11:48:39 AM11/15/14
to gola...@googlegroups.com
Добрый день!
Есть код
package main

import (
"fmt"
)

func main() {
       
        s := []byte("ABCDEF")
        sub := s[1:4]
        s[0] = 'a'
        sub[0] = 'b'
        f(sub)
        fmt.Println("Hello, playground: ", string(s), string(sub))
}

func f(slice []byte) {
     slice[1] = 'c'
}

Выдает
Hello, playground: abcDEF bcD

Почему то полагал, что в функцию передастся указатель на копию слайса (sub). Значит, если нужно то реализовать создание копии слайса самостоятельно? Или я что то упустил?

Dmitry Vyukov

unread,
Nov 15, 2014, 11:52:59 AM11/15/14
to gola...@googlegroups.com
Все правильно.
Копирование слайса не копирует массив.

Если передавать массив [6]byte, то тогда он скопируется

Gerasim

unread,
Nov 15, 2014, 1:17:49 PM11/15/14
to gola...@googlegroups.com
Спасибо Дмитрий
Reply all
Reply to author
Forward
0 new messages