LinuxForum.Fans
Тема

Программирование на Go

Автор: XliN 6 сообщений 1358 просмотров
#244040

Прошу помощи программистов. Я ради рыболовства решил его посмотреть. Ну нечем мне на работе заняться.
Есть код. Он считает квадратное уравнение. Как мне расчёты вывести в браузере?
Вообще задача попробовать сделать web приложение типа тикеров. Для расширения кругозора. Ну там с базой поработать, добавить, убрать, достать )))

text
package main

import ( "fmt" "math" "net/http" )

func kvadur (a, b, c float64) float64{ var x1,x2,d,kor float64 d = b*b - 4*a*c fmt.Println("Diskriminant:",d) if d > 0 { kor = math.Sqrt(d) x1 = (-b+kor)/2 x2 = (-b-kor)/2 } fmt.Println("X1 =",x1) fmt.Println("X2 =",x2) return x1 } func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello,%s", r.URL.Path[1:]) }

func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) // kvadur(2,10,3)

}

Тут я думаю больше мне сишники помогут или питонщики ))

text
fmt.Fprintf(w, "Hello,%s", r.URL.Path[1:])

Вот эта строчка показывает все что введено после / в урле браузера.

#244049

вы первый раз с форматными строками работаете?
видимо нужно что-то типа:
fmt.Fprintf("/", "x1=%f\n x2=%f", x1, x2)
что за слеш в начале - не знаю.
ЗЫ: любой man по printf в помощь.

#244056
"Fat-Zer" написал:
вы первый раз с форматными строками работаете?

Я вообще не программист. :) Что то тут не так. Как функция увидит в своем теле другую функцию... описанная выше.
Пример выше, ругается что не видит x1 и x2. Но если их объявить глобально, то выводит, но равные нулю.

text
fmt.Fprintf(w, "x1=%f\n x2=%f",x1,x2)

Как его заставить получить значения иксов из выше описанной функции?

text
func kvadur (a, b, c float64) float64{
    var x1,x2,d,kor float64
        d = b*b - 4*a*c
        fmt.Println("Diskriminant:",d)
        if d > 0 {
            kor = math.Sqrt(d)
            x1 = (-b+kor)/2
            x2 = (-b-kor)/2
        }
        fmt.Println("X1 =",x1)
        fmt.Println("X2 =",x2)
        return x1
}

И вот еще. Меня смущает return x1. Криво как то, не?

#244058
"--=XliN=--" написал:
Я вообще не программист.

уже понял... книжку бы вас отправить читать, да только вот не знаю какую =)

"--=XliN=--" написал:
Как его заставить получить значения иксов из выше описанной функции?

нужно из функции вернуть два значения. как - зависит от особенностей языка... ждите тех, кто знает Go.
обычно есть 3 способа:
1. выходные параметры
2. глобальные переменные
3. создать тип, который включает 2 значения (структуру).

"--=XliN=--" написал:
И вот еще. Меня смущает return x1. Криво как то, не?

да, криво... см. выше.

#244072

Ну вот в таком в виде он все-таки выводит значение X1 и X2 в браузер. :)

text
package main

import ( "fmt" "math" "net/http" ) var x1g,x2g float64 func duble_uravnenie (a, b, c float64) (x1, x2 float64){ var d,kor float64 d = b*b - 4*a*c if d > 0 { kor = math.Sqrt(d) x1 = (-b+kor)/2 x2 = (-b-kor)/2 } x1g, x2g = x1, x2 return x1, x2 } func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "\tx1=%f\n\tx2=%f",x1g,x2g) }

func main() { duble_uravnenie(1,10,-3) http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) }

#244122

Прошу прощения, отвлеку еще. Подскажите что почитать на тему:"как код интегрировать с html?".

Интересует меня как передать значения с браузера скрипту. Например задать значения для того же квадратного уравнения.

З.Ы. Пример конечно не ахти, но в голову больше ничего не пришло. Потренироваться самое то :)
Будем плясать от меньшего к большему.

Войдите или зарегистрируйтесь, чтобы ответить.