• Что такое емкость среза?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    если по простому и коротко, то для среза:
    ёмкость(cap) - это выделенная память под элементы, при превышении размер автоматически увеличивается в два раза.
    длина(len) - это инициализированная память элементов, для превышения(добавления) нужно вручную использовать append.
    По умолчанию cap = len
    Всегда будет cap >= len
    Грубо говоря, cap выделяет память, а len инициализирует её всю или только часть .

    slice := make([]int, 2, 2) // эвивалентно slice := []int{0,0}
    fmt.Printf("len: %d, cap: %d\n", len(slice), cap(slice))
    fmt.Println(slice)
    
    slice = append(slice, 3)
    
    fmt.Printf("len: %d, cap: %d\n", len(slice), cap(slice))
    fmt.Println(slice)

    выведет:
    len: 2, cap: 2
    [0 0]
    
    len: 3, cap: 4
    [0 0 3]


    п.с.
    если конкретно по вашему примеру то в первом и во втором случае у вас инициализировано только 10 элементов которые команда fmt.Println(slice) и выводит.
    А паника при slice[11]=0 будет из за того что этот 11 элемент не инициализирован, хоть память под него и выделена, здесь необходимо использовать append.
    Ответ написан
    Комментировать
  • Можно ли использовать телефон как wi-fi адаптер?

    Да, можно.
    Подключаете телефон кабелем к компьютеру. Далее в телефоне Settings -> Wireless & Networks More -> Tethering & portable hotspot -> USB tethering.
    Телефон превращается в сетевую карту. Далее, если у вас Линукс -- ничего делать не надо, карточка сразу подхватится в системе. Если Виндовз -- скорее всего, предложит поставить драйвера и перезагрузиться. Если у вас Мак -- храни вас Господь, необходимо ставить модуль ядра или что-то в этом роде (стороннее решение).
    После этого включаете вай-фай в телефоне и связь появляется.
    Ответ написан
    Комментировать