только для "чисто в академических целей"
package main
import (
"encoding/json"
"io"
"log"
"net/http"
"strings"
)
func main() {
const jsonStream = `
{"Port": ":8080", "Dir": "/home/v-smerti/localhost/public/file_server"}
{"Port": ":8081", "Dir": "/home/v-smerti/localhost/public/file"}
`
type Message struct {
Port, Dir string
}
dec := json.NewDecoder(strings.NewReader(jsonStream))
for {
var m Message
if err := dec.Decode(&m); err == io.EOF {
break
} else if err != nil {
log.Fatal(err)
}
go http.ListenAndServe(m.Port, http.FileServer(http.Dir(m.Dir)))
}
forever := make(chan struct{})
<-forever
}
ps:
1
missing port in address 8080 - тут же написано нет порта в адресе, либо указываем ip:port, либо :port и слушаем все интерфейсы
2
cannot use bs (type []byte) as type string in argument to strings.NewReader
тоже все написано, нужно "скастить" []byte к string: string(bs)
3 cофт просто напросто немножко "повисев" оканчивает свою роботу.
все верно, main закончила работу, горутины "отдельно" крутятся их никто не ждет
ps2: dec := json.NewDecoder(strings.NewReader(jsonStream)) для работы с потоком (os.Open() как пример работы с локальным файлом), a так json.Unmarshal