
Vladimir
05.07.2017
17:35:54
Будет тот же результат

Valentin
05.07.2017
17:37:35

Mush
05.07.2017
17:37:54
func TestSomeTest(t *testing.T) {
s := make([]int, 10)
s[0] = 1
s[1] = 2
s[2] = 3
func(d []int){
d = append(d, 4)
}(s)
log.Println(s)
}
[1 2 3 0 0 0 0 0 0 0]

Мерлин
05.07.2017
17:37:59

Google

Илья
05.07.2017
17:38:32

Vladimir
05.07.2017
17:38:45

Valentin
05.07.2017
17:39:10
Блин я уже забыл про эти особенности

Mush
05.07.2017
17:39:15

Олег
05.07.2017
17:39:17
Так не изменится же ничего. Как выводило 1, 2, 3, так и будет выводить

Valentin
05.07.2017
17:39:34
Действительно, если cap хватает аллокации не будет

Vladimir
05.07.2017
17:39:37

Mikalai
05.07.2017
17:39:41

Илья
05.07.2017
17:40:18
или все данные добавлять append

Mush
05.07.2017
17:41:12
в логе

Valentin
05.07.2017
17:41:33
Покажи код

Google

Mush
05.07.2017
17:41:34
что так:
func TestSomeTest(t *testing.T) {
s := make([]int,3, 10)
s[0] = 1
s[1] = 2
s[2] = 3
func(d []int){
d = append(d, 4)
}(s)
log.Println(s)
}

Vladimir
05.07.2017
17:41:36

Олег
05.07.2017
17:41:50

Mush
05.07.2017
17:42:06
что так:
func TestSomeTest(t *testing.T) {
s := make([]int, 0, 10)
s = append(s, 1)
s = append(s, 2)
s = append(s, 3)
func(d []int){
d = append(d, 4)
}(s)
log.Println(s)
}
Что и есть ожидаемо :)
как же? ведь без реаллокации мы должны были поменять исходный слайс, как я понял и получить 1 2 3 4

Vladimir
05.07.2017
17:42:39

Rail'
05.07.2017
17:42:51
парни, если я в функции main запускаю поток(go parser()), то каким образом сделать так, чтобы программа не отстанавливалась пока выполняется поток?

Vladimir
05.07.2017
17:43:00
При передаче его в функцию
Происходит копирование структуры слайса
Указателя на функцию
Капа и лен
Ты меняешь Len нового слайса

Олег
05.07.2017
17:43:39

Vladimir
05.07.2017
17:43:52
Но при этом первые три элемента ты можешь менять
И если ты залезешь внутрь старого слайса и поменяешь ему только Len на 4, то там тоже найдешь свой новый элемент

Олег
05.07.2017
17:44:39

Vladimir
05.07.2017
17:45:15

Mush
05.07.2017
17:45:34

Илья
05.07.2017
17:45:40

Google

Vladimir
05.07.2017
17:45:59

Илья
05.07.2017
17:46:17

Valentin
05.07.2017
17:46:58
Смысл спорить, обратимся у официальному источнику https://blog.golang.org/go-slices-usage-and-internals

Максим
05.07.2017
17:47:00

Mush
05.07.2017
17:47:17

Олег
05.07.2017
17:48:14

Vladimir
05.07.2017
17:48:29

Valentin
05.07.2017
17:48:31
А не лучше вернуть слайс в return?

Mush
05.07.2017
17:48:57
ну или так

Anton
05.07.2017
17:51:16
короче, мапы можно передавать без *, если я туда в функции хочу напихать еще мульён значений ?

Valentin
05.07.2017
17:51:45
Верни в функции слайс и все

Mush
05.07.2017
17:52:25
у меня есть код, который римерно 32млн значений пихает в мапу и читает из нее на протяжении разлиичных вызовов в скрипте

Valentin
05.07.2017
17:52:27
*[]T это хуерага

Мерлин
05.07.2017
17:52:57
@m0sth8 а ваш фреймворк не вышел ещё на гитхабе?

Valentin
05.07.2017
17:53:26

Anton
05.07.2017
17:53:28
*[]T это хуерага
отлично. Мне товарищу так и передать?))) Думаю, он скжет что не аргументированно как-то

Valentin
05.07.2017
17:53:50

Mush
05.07.2017
17:54:02

Slava
05.07.2017
17:54:07

Google

Илья
05.07.2017
17:54:24

Мерлин
05.07.2017
17:54:37
какой?
Вебфреймворк на кодогенерации

Олег
05.07.2017
17:54:40

Ivan
05.07.2017
17:54:56
Погодите погодите т.е. *[]T нах не надо?
и []*T тоже?

Valentin
05.07.2017
17:55:20
А нахуя?

Илья
05.07.2017
17:55:29
[]*T это вагон г на хипе

Олег
05.07.2017
17:55:36

Anton
05.07.2017
17:55:47

Ivan
05.07.2017
17:57:09
Я тоже делал

Admin
ERROR: S client not available

Andrew
05.07.2017
17:57:19

Anton
05.07.2017
17:57:47
для []T и *[]T можно вернуть из функции nil

Илья
05.07.2017
17:59:15
т.е. слайс с nil вместо элемента
тогда *T осмысленно

Мерлин
05.07.2017
18:01:18
Кажется, сегодня будет #подкаст

Anton
05.07.2017
18:06:28
так. еще из простых вопросов. Есть функция, которая должна пройтись по слайсу в режиме чтения и вернуть другой слайс. Сейчас это описано так
func test(arr *[]Test) []Test
. Нужен ли * ?

Valentin
05.07.2017
18:07:00
нет

Anton
05.07.2017
18:07:06
вернее написано func test(arr *[]Test) *[]Test, но тут уже сказали, что *[]Test на выходе - зашквар

Google

Andrew
05.07.2017
18:07:34
Нет, обе звезды не требуются

Valentin
05.07.2017
18:07:38
наконец я дома, настало время открывать IDE

Олег
05.07.2017
18:07:59

Valentin
05.07.2017
18:08:24
вроде уже идет, мне приходил какой то пуш из слака

Andrew
05.07.2017
18:08:47

Anton
05.07.2017
18:09:13
если передаем слайс в режиме "почитать", то он все равно передастся по ссылке и можно без *. Копирования элементиков в функцию не будет. Пральн?

John
05.07.2017
18:09:50
Ребята, не подскажете, каким образом проще всего получать вывод из tcpdump в golang? пытался сделать таким способом...
package main
import (
"bufio"
"log"
"os/exec"
)
func main() {
cmd := exec.Command("tcpdump", "-l -ilo -nXs0 udp and port 4729")
stdout, err := cmd.StdoutPipe()
if err != nil {
panic(err)
}
if err := cmd.Start(); err != nil {
panic(err)
}
in := bufio.NewScanner(stdout)
for in.Scan() {
log.Printf(in.Text())
}
if err := in.Err(); err != nil {
log.Printf("error: %s", err)
}
}
но программа завершается без единой строчки вывода

Олег
05.07.2017
18:10:18

John
05.07.2017
18:10:26
в чем я могу ошибаться?

Мерлин
05.07.2017
18:10:38

Anton
05.07.2017
18:10:42

Vladimir
05.07.2017
18:11:02

Олег
05.07.2017
18:11:25

John
05.07.2017
18:11:41
cmd.Wait()?
если я не ошибаюсь, то это приведет к тому, что программа будет ждать окончания завершения вывода?
или как аз наоборот?

Valentin
05.07.2017
18:14:25
Так открой ее код :)

Anton
05.07.2017
18:15:42
За простые вопросики извиняйте, изучаю го по gobyexample, а там ничего путного не пишут

Максим
05.07.2017
18:16:56

John
05.07.2017
18:17:45
тоже молчит, уже пробовал
а в каком месте лучше поставить cmd.Wait()?

Anton
05.07.2017
18:18:30
А просто cmd.Output() работает? ?