results := make(map[string]string)
r, _ := regexp.Compile("paid_y_12=(?P<match>[0-9])<br>")
captures := r.FindStringSubmatch(text)
results["paid_y_12"] = captures[1]
// здесь самое время удалить переменные r и captures, используя какой-то аналог PHP unset
r, _ := regexp.Compile("paid_n_12=(?P<match>[0-9])<br>")
captures := r.FindStringSubmatch(text)
results["paid_n_12"] = captures[1]
Очень хочу продолжать назначать значения переменным через := , не хочу осознавать то, что они уже были созданы.
Привет,Возможно ли в Go сделать что-то типа unset для переменной?Чтобы в дальнейшем создать ее вновь.Имеется в виду следующее:results := make(map[string]string)r, _ := regexp.Compile("paid_y_12=(?P<match>[0-9])<br>")
captures := r.FindStringSubmatch(text)
results["paid_y_12"] = captures[1]
// здесь самое время удалить переменные r и captures, используя какой-то аналог PHP unset
r, _ := regexp.Compile("paid_n_12=(?P<match>[0-9])<br>")
captures := r.FindStringSubmatch(text)
results["paid_n_12"] = captures[1]Очень хочу продолжать назначать значения переменным через := , не хочу осознавать то, что они уже были созданы.
Возможно ли это реализовать в Go?
--
Вы получили это сообщение, поскольку подписаны на группу Golang Russian.
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес golang-ru+...@googlegroups.com.
Настройки подписки и доставки писем: https://groups.google.com/groups/opt_out.
results := make(map[string]string)
// просто объявляем переменныеvar r *regexp.Regexpvar captures []stringr = regexp.MustCompile("paid_y_12=(?P<match>[0-9])<br>") // используйте MustCompile
captures = r.FindStringSubmatch(text)results["paid_y_12"] = captures[1]
r = regexp.MustCompile("paid_n_12=(?P<match>[0-9])<br>")
captures = r.FindStringSubmatch(text)results["paid_n_12"] = captures[1]
Алексей +1.
Ребята, не ленитесь явно объявлять переменные и минимизируйте использование оператора ':='. Это благотворно скажется на вашем здоровье...
Если вы используете := при получении результата вызова функции то, чтобы узнать тип возвращенного значения, вам придется лезть в документацию
и смотреть объявление функции. Это лишние затраты как вашего времени, так и того, кто будет разбираться с вашим кодом после вас.
Особенно это становится проблемой на больших проектах...
Используйте ':=' только для явной инициализации/объявления, как это сделано в для переменной result в коде ТС.
среда, 22 января 2014 г., 13:26:35 UTC+4 пользователь Igor Yurchenko написал:Алексей +1.
Ребята, не ленитесь явно объявлять переменные и минимизируйте использование оператора ':='. Это благотворно скажется на вашем здоровье...
Если вы используете := при получении результата вызова функции то, чтобы узнать тип возвращенного значения, вам придется лезть в документациюМожет это проблема используемого инструментария? IDE/Редактора?
Авторы Go не зря же включили подобную конструкцию в язык, а для того чтобы облегчить жизнь разработчику. Учитывая пуризм авторов языка надо понимать, что это большой подарок и не надо от него отказываться :)
var v []int = make([]int, 100)Объявление типа часто занимает куда больше 5 символов. Но за всё приходится платить. Внедрение оператора := повлекло с собой необходимость реализовать некрасивый костыль, о котором вы пишите в конце, редекларацию переменных.
и смотреть объявление функции. Это лишние затраты как вашего времени, так и того, кто будет разбираться с вашим кодом после вас.
Особенно это становится проблемой на больших проектах...А какие размеры (в строках кода) Go проектов, про которые вы говорите, что они "большие"? Где над такими сейчас работают в России?
Используйте ':=' только для явной инициализации/объявления, как это сделано в для переменной result в коде ТС.В Go ничто не мешает написать автоматическую тулзу*, которая развернет все присвоения вида name := call()вvar name Typename = call()заодно магия** оператора := раскроется в скучный регулярный код