Valentin
под Windows вообще хз
Юрий
не подкинете пример как windows в shutdown отправить ?
Eugene
Anton
Юрий
а в рамках канала ?
Anton
exec.Command("cmd", "/C", "shutdown", "/s").Run()
? :D
Anton
если вдруг тут напишут решение, то я тоже буду благодарен. Самому нужно
Юрий
есть функция shutdown в пакете golang.org/x/sys /windows
Юрий
вот тока как ей воспользоваться не хватает опыта
Юрий
не понимаю , что ей надо в качестве аргументов
Anton
https://stackoverflow.com/questions/39595252/shutting-down-windows-using-golang-code
Anton
Юрий
я это видел
Юрий
бля
Юрий
а я голову ломаю зачем ей handle :)
djdf
Доброй ночи! Подскажите, может кто сталкивался, команда go tool cover -html=cover.out -o cover.html не видит файла. В файле cover.out есть полный путь к этому файлу но начинается с "_". Как исправить ситуацию?
Oleg
Alexandr
Всем привет! Есть алиас для стринга
type Category string
есть слайс categories []Category
Alexandr
нужно заджойнить элементы слайса strings.Join(categories, "|")
Alexandr
как это можно провернуть? писать самому функцию в которой объединять?
Kirill
Просто у вас не алиасы, а собственный тип
package main
import (
"fmt"
"strings"
)
type Category = string
func main() {
categories := []Category{
"A", "B", "C",
}
fmt.Println(strings.Join(categories, "|"))
}
Kirill
Для собственных типов да - пишите свою функцию
Alexandr
спасибо!)
Alex
С точки зрения сборщика мусора. Как более правильно очистить map?
1) mymap = make(map[keytype]valtype)
2)
for k := range m {
delete(m, k)
}
Kirill
mymap=nil
Anatoly
используй первый, если не надо сохранить предыдущий объект, используй второй когда надо сохранить объект
Aleksandr
https://mengzhuo.github.io/yaml-to-go/
Kirill
https://golang.org/pkg/context/
Aleша
друзья, паршу json через unmarshal, в struct, почему то первый элемент заходит, а следом за ним список элементов пуст. помогите)
Aleша
куда копать
Kirill
А что вы за общие зависимости вообще пытаетесь запихать ? Что у вас так и от чего зависит ? В го принято использовать интерфейси
Kirill
для этого не нужен DI
Kirill
Не надо вам никаких контестов и DI, вам бы попробовать почитать, что мешает сделать
type MyApp struct {
Connect *sql.DB
}
func (app *MyApp)Handler(){
...
}
И в main просто пропихнуть туда sql.DB ?
Anatoly
Kirill
Kirill
зря
Kirill
брось говняху
Kirill
фу
Kirill
Интерхуяйз. Так никто не делает.
Kirill
Как обычно
Alexander
короче в го принято попроще писать и не городить абстракций где не надо, в отличии от джав пхп и прочего
Alexander
Надо принять и embrace it 😆
Nikita
В го вообще серьезные проблемы в этом плане в следствии некоторых ограничений. Потому все контейнеры крайне примитивные, т.е. мечтать о таком контейнере как autofac не имеет смысла
Nikita
Но я использую github.com/chrisehlen/knex/factory
Dmitriy / დიმიტრი
Есть пакет с функциями для тестирования. Нужно сделать так, что бы при компиляции он исключался из сборки, а если кто-то случайно одну из функций использовал выводилось сообщение "TESTS ONLY" и программа просто падала.
Как лучше это сделать?
Я думал через сборку с тэгами. Может при сборке есть какие-то дефолтные тэги, которые всегда передаются?
Bogdan
приветствую
Подскажите, по братски, начинающему)
Есть структура (BaseConfigurator). К ней три метода идут (OnInit, OnGinInit, OnClose).
Есть три наследника этой структуры (ViperConfigurator, GinCongifurator, GormConfigurator). Каждый из них может переопределять какой то из методов базовой структуры
Пытаюсь сделать такую хрень
configs = {
new(ViperConfig),
new(GinConfig),
new(GormConfig),
}
ругается на ошибку
init.go:13:6: cannot use new(ViperConfig) (type *ViperConfig) as type base.BaseConfig in array or slice literal
init.go:14:6: cannot use new(GinConfig) (type *GinConfig) as type base.BaseConfig in array or slice literal
init.go:15:6: cannot use new(GormConfig) (type *GormConfig) as type base.BaseConfig in array or slice literal
Bogdan
сильно ли то что я делаю соответствует go way и если нет то как сделать что бы соответствовало?)
Bogdan
вполне допускаю что оопшность головного мозга вылезла и не допускает возможности по другому мыслить)
Dmitriy / დიმიტრი
Зачем ты так сразу унижаешься-то? Тут с типами что-то не то, попробуй туда не указатели передавать. configs это же слайс?
Dmitriy / დიმიტრი
Dmitriy / დიმიტრი
Или тебе без указателей надо?
Bogdan
Bogdan
Dmitriy / დიმიტრი
Погоди. А BaseConfig это именно структура?
Dmitriy / დიმიტრი
Не interface?
Bogdan
Bogdan
если есть возможность задать реализацию методов у интерфейса - буду рад)
Dmitriy / დიმიტრი
Можно сделать shadowing, ща найду пример
Bogdan
Dmitriy / დიმიტრი
В твоем случае ты создаешь базовый интерфейс и структуру:
type IBaseConfig interface {
}
type BaseConfig struct {
}
Следующие структуры будут выглядеть так:
type NextConfig struct {
IBaseConfig
}
next := NextConfig{BaseConfig{}}
Dmitriy / დიმიტრი
Просто в NextConfig переопределяешь нужный метод и все
Dmitriy / დიმიტრი
при вызове через интерфейс он вызовется поверх метода BaseConfig
Dmitriy / დიმიტრი
Nikita
Дублирую свой вопрос:
Просто не надо импортировать пакет с тестовыми функциями и он не будет включен в сборку
Bogdan
Дублирую свой вопрос:
может чем то поможет)
https://stackoverflow.com/questions/10646531/golang-conditional-compilation
Nikita
Если импорт не используется, то код даже не скомпилится
Bogdan
Nikita
Ничего себе
Получилось
Большое спасибо :)))
Просто ошибка в том, что в го нет наследования. Потому, когда та создаешь какую-то BaseStruct, а дальше вкладываешь в следующую структуру, ты не можешь ее использовать как BaseStruct
Nikita
Bogdan