Как выполнить простую команду Windows в Golang?

Короткий ответ: исходя из контекста, я не могу сказать, является ли это всего лишь очень быстро и грязным кодом для личного использования или ключевой частью последнего внутреннего программного обеспечения Goldman Sachs, поэтому я открою говоря: eww. Это довольно забавный алгоритм сортировки; попробуйте использовать что-то немного менее «извилистым», если сможете.

Длинный ответ:

Два вопроса, которые сразу приходят вам в голову в вашем случае, - это производительность и правильность. Неформально убедитесь, что это быстро, и убедитесь, что ваш алгоритм является общим порядком .

(Конечно, если вы не сортируете более 100 предметов, вы, вероятно, можете пренебрегайте этим пунктом.) Эффективность имеет значение, так как скорость компаратора будет наибольшим фактором в скорости вашего сортировки (если алгоритм сортировки «идеален» для типичного списка). В вашем случае скорость компаратора будет зависеть в основном от размера строки. Строки кажутся довольно короткими, поэтому они, вероятно, не будут доминировать так же, как размер вашего списка.

Поворачивая каждую строку в кортеж строки с строками, а затем сортируя этот список кортежей, как было предложено в другом ответе, не удастся выполнить некоторые из ваших случаев, так как вы, видимо, будете иметь строки с несколькими номерами, которые появляются.

Другая проблема - правильность. В частности, если алгоритм, который вы описали, когда-либо разрешит A> B> ...> A, тогда ваш вид будет недетерминированным. В вашем случае я боюсь, что это возможно, хотя я не могу это доказать. Рассмотрим некоторые примеры синтаксического анализа, такие как:

  aa 0 aa
  aa 23aa
  aa 2a3aa
  aa 113aa
  aa 113 aa
  a 1-2 a
  a 13 a
  a 12 a
  a 2-3 a
  a 21 a
  a 2.3 a

24
задан Rene Knop 13 November 2018 в 03:19
поделиться

2 ответа

Я получил ту же ошибку, что и вы. Но dystroy верен: вы не можете запустить del или любую другую команду, встроенную в cmd, потому что нет файла del.exe (или любого другого исполняемого файла в этом отношении).

Я заставил его работать с:

package main

import(
    "fmt"
    "os/exec"
)

func main(){    
    c := exec.Command("cmd", "/C", "del", "D:\\a.txt")

    if err := c.Run(); err != nil { 
        fmt.Println("Error: ", err)
    }   
}
42
ответ дан ANisus 13 November 2018 в 03:19
поделиться

Если вам нужен вывод команды cmd:

if c, err := exec.Command("cmd","/c","del","a.txt").CombinedOutput(); err != nil {
        log.Fatal(err)
    } else {
        fmt.Printf("%s\n", c)
    }
2
ответ дан Constantin Konstantinidis 13 November 2018 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: