golangで簡単なwebサーバーをたててみた

まずはじめに

こんにちは。RIN1208です。
この記事はWCDI Advent Calendar 2018の21日目の記事になります。
今回は今勉強しているgoで簡単なwebサーバーをたててみました。

テンプレートエンジンを使わないサーバー(言い方が違ったらごめんなさい...)

  
package main   

import (  
    "fmt"  
    "net/http"  
)  

func hello (w http.ResponseWriter, r *http.Request){  
    fmt.Fprintf(w, "hello")  
    }  
func sekai(w http.ResponseWriter, r *http.Request){  
    fmt.Fprintf(w, "sekai")  
    }  
    
func main () {  

    server := http.Server {  
    Addr: "127.0.0.1:8080",  
    }  
    http.HandleFunc("/hello",  hello)  
    http.HandleFunc("/sekai",  sekai)  
    

    server.ListenAndServe()  
}  

こちらのコードをgo build (ファイル名)した後にgo run (ファイル名)をして好きなブラウザでhttp://localhost:8080/helloに接続するとhelloと、http://localhost:8080/sekaiに接続するとsekaiと表示されます

テンプレートエンジンを使ったサーバー

package main  

import (  
    "html/template"  
    "net/http"  
)  

func hello(w http.ResponseWriter, r *http.Request) {  
    t, _ := template.ParseFiles("kemo.html")  
    t.Execute(w, "こんにちは")  
}  

func main() {  

    server := http.Server{  
        Addr: "127.0.0.1:8080",  
    }  
    http.HandleFunc("/", hello)  

    server.ListenAndServe()  
}  

使用するhtmlのコード({{.}}の書いたところに「こんにちは」が表示される)

  
<!DOCTYPE html>  
    
<html>  
    <head>  
        <meta charset="utf8">  
        <title>おはよう</title>  

    </head>  
    <body>  
        <h1>おはようせかい</h1>  
        {{.}}  
    </body>  
    </html>  

以上のコードをhttp://localhost:8080/お好みのブラウザで接続すると「おはようせかい」の下に「こんにちは」と表示されます

まとめ

このような感じでwebサーバーがたてられます。まだまだ勉強不足なのでこれから勉強していきたいと思います。
以上でWCDI Advent Calendar 2018の21日目の記事を終わります。読んでいただきありがとうございました。

golangのAtCoderで使えそうな関数をまとめてみた

この記事はWCDI Advent Calendar 2018の13日目の記事です。

こんにちはRIN1208です。この記事は初めて書く記事になります。
初めて書くことに加え、Go言語自体まだ触り始めてそこまでたってないため、至らぬ点が多々ございますが目をつむっていただければ幸いです。

Go言語とは?

Go言語とはGoogleが開発したコンパイル言語です

Goの環境構築

今回は省略させていただきます

sliceの昇順ソート

package main   
import(  
    "sort"  
    "fmt"  
)  
func main () {  
a := []int{2, 3, 4, 5, 6, 1}  
sort.Sort(sort.IntSlice(a))  
fmt.Println(a) // a = [1, 2, 3, 4, 5, 6 ] になります  
}

文字列の長さを取得

package main  
import(  
    "fmt"  
    "unicode/utf8"  
)  
func main () {  
a := "konnnitiha"  
s := utf8.RuneCountInString(a)  
fmt.Println(s) // s = 10  
}  

標準入力(変数に文字列や数字を入力する関数)

package main  
import (  
    "fmt"  
)  
func main () {  
var a int  
fmt.Scan(&a)    //ここでは100を入力  
fmt.Println(a)    //100を出力  
}  

文字列を数値に変換

package main  
import(  
"fmt"  
"strconv"  
)  
func main  () {  
var b int  
a := "123"  
b, _ = strconv.Atoi(a)  
fmt.Println(b)   // b = 123 の数値になる  
}

数値を文字に変換

package main   
import (  
"fmt"  
 "strconv"  
)  
func main () {  
a := 123  
var b string  
b = strconv.Itoa(a)  
fmt.Println(b)   // b = "123"  になる  
}  

とりあえず以上の関数さえ使えればAtCoderのB問題くらいは解けると思います。(今のところは解けてます) 以上で今回の記事は終わります。