Golang Start Gin 및 GORM WebApp
입문을 결정하다
요즘 자주 듣는 Go 언어.
나는 Rubby, Python 등 동적 언어만 있고 정적 언어의 경험은 거의 없다.
하지만 정태적인 언어를 쓸 수 있다는 동경 때문에 정태적인 언어를 배우고 싶어요.
Go가 쉽고 사용하기 쉽다는 말을 듣고 기뻐서 입문을 시도했다.
Go 설치
환경은 맥OS입니다.brew install go
Go의 설정
~/.bash_profileexport GOPATH=${HOME}/go
export PATH=$GOPATH/bin:$PATH
go env
에서 Go의 환경 변수를 볼 수 있습니다.
작업 디렉토리 만들기
제작~/go
, ~/go/
이하에서 srcpkg bin을 제작.mkdir $GOPATH
cd $GOPATH
mkdir src pkg bin
vim-go 설치
Vismmer 이외에 다음 단계를 따르십시오.
NeoBundle에서 이렇게 설치
.vimrcNeoBundle 'fatih/vim-go'
그리고 나서:NeoBundleInstall
재부팅 후:GoInstallBinaries
원하는 매크로 패키지를 설치합니다.
vim-go 중
또는:GoFmt
코드 성형(저장할 때도 자동 성형):GoRun
에서 수행할 수 있습니다.
Hello,World!시험해 보다
~/go/src/hello.go
.
hello.gopackage main
import "fmt"
func main() {
fmt.Printf("Hello,World!\n")
}
go run hello.go
또는vim:GoRun
를 통해
Hello,World!집행하다.
첫 행package main
에 패키지를 선언합니다.
세 번째 줄에서 fmt 패키지 가져오기
main () 함수에서 Hello, World!를 참고하십시오.
기본 문법을 배우다
http://gihyo.jp/dev/feature/01/go_4beginners/0002?page=1
'1Q84'를 읽고 가장 기본적인 점을 배웠다.
어쨌든 Go로 웹페이지 만들고 싶어요.
이번에는 gin이라는 Go로 만든 웹 프레임워크를 사용해 보았다.
OR 맵은 GORM을 사용합니다.
황금 프레임의 특징
경량 프레임.
Go제 프레임에는 리벨 등 쌓인 프레임이 있는데 이번에는 가벼운 프레임을 쉽게 만들려고 gin을 선택했다.
여기.에 따르면 진은 다른 고의 WAF보다 반응 속도가 빠르다.
GORM의 특징
상당히 높은 기능으로 루비의 Active Record와 비슷하다.
설치 Gin
go get github.com/gin-gonic/gin
브라우저에 Hello, World!시험해 보다
~/go/src
다음에 작업 디렉터리를 만듭니다.mkdir ~/go/src/gin-first-app
아래main.goo에 코드를 쓰다.
main.gopackage main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
c.String(200, "Hello,World!")
})
r.Run()
}
그리고 ~/go/src/gin-first-app
http://localhost:8080가다
Hello,World!완료되었습니다.
간단한 명부를 만들었다
이런 느낌이에요.
당신은 이름과 나이를 입력해서 등록할 수 있습니다.
ORM 맵 GORM 사용
gorm 설치go get -u github.com/jinzhu/gorm
goo-sqlite3도 설치go get -u github.com/mattn/go-sqlite3
HTML에 데이터베이스 정보를 표시하고 싶으므로 작업 디렉터리 아래(gin-first-app)에templates 디렉터리를 넣으세요.
그리고 그 다음에 index.tmpl을 만드십시오.
main.편집 고
main.gopackage main
import (
"fmt"
"strconv"
"github.com/gin-gonic/gin"
"github.com/jinzhu/gorm"
_ "github.com/mattn/go-sqlite3"
_ "net/http"
)
type Person struct {
gorm.Model
Name string
Age int
}
func db_init() {
db, err := gorm.Open("sqlite3", "test.sqlite3")
if err != nil {
panic("failed to connect database\n")
}
db.AutoMigrate(&Person{})
}
func create(name string, age int) {
db, err := gorm.Open("sqlite3", "test.sqlite3")
if err != nil {
panic("failed to connect database\n")
}
db.Create(&Person{Name: name, Age: age})
}
func get_all() []Person {
db, err := gorm.Open("sqlite3", "test.sqlite3")
if err != nil {
panic("failed to connect database\n")
}
var people []Person
db.Find(&people)
return people
}
func main() {
r := gin.Default()
r.LoadHTMLGlob("templates/*")
db_init()
r.GET("/", func(c *gin.Context) {
people := get_all()
c.HTML(200, "index.tmpl", gin.H{
"people": people,
})
})
r.POST("/new", func(c *gin.Context) {
name := c.PostForm("name")
age, _ := strconv.Atoi(c.PostForm("age"))
create(name, age)
c.Redirect(302, "/")
})
r.Run()
}
주안점
brew install go
export GOPATH=${HOME}/go
export PATH=$GOPATH/bin:$PATH
go env
mkdir $GOPATH
cd $GOPATH
mkdir src pkg bin
NeoBundle 'fatih/vim-go'
:NeoBundleInstall
:GoInstallBinaries
package main
import "fmt"
func main() {
fmt.Printf("Hello,World!\n")
}
이번에는 gin이라는 Go로 만든 웹 프레임워크를 사용해 보았다.
OR 맵은 GORM을 사용합니다.
황금 프레임의 특징
경량 프레임.
Go제 프레임에는 리벨 등 쌓인 프레임이 있는데 이번에는 가벼운 프레임을 쉽게 만들려고 gin을 선택했다.
여기.에 따르면 진은 다른 고의 WAF보다 반응 속도가 빠르다.
GORM의 특징
상당히 높은 기능으로 루비의 Active Record와 비슷하다.
설치 Gin
go get github.com/gin-gonic/gin
브라우저에 Hello, World!시험해 보다
~/go/src
다음에 작업 디렉터리를 만듭니다.mkdir ~/go/src/gin-first-app
아래main.goo에 코드를 쓰다.main.go
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
c.String(200, "Hello,World!")
})
r.Run()
}
그리고 ~/go/src/gin-first-app
http://localhost:8080가다 Hello,World!완료되었습니다.
간단한 명부를 만들었다
이런 느낌이에요.
당신은 이름과 나이를 입력해서 등록할 수 있습니다.
ORM 맵 GORM 사용
gorm 설치
go get -u github.com/jinzhu/gorm
goo-sqlite3도 설치go get -u github.com/mattn/go-sqlite3
HTML에 데이터베이스 정보를 표시하고 싶으므로 작업 디렉터리 아래(gin-first-app)에templates 디렉터리를 넣으세요.그리고 그 다음에 index.tmpl을 만드십시오.
main.편집 고
main.go
package main
import (
"fmt"
"strconv"
"github.com/gin-gonic/gin"
"github.com/jinzhu/gorm"
_ "github.com/mattn/go-sqlite3"
_ "net/http"
)
type Person struct {
gorm.Model
Name string
Age int
}
func db_init() {
db, err := gorm.Open("sqlite3", "test.sqlite3")
if err != nil {
panic("failed to connect database\n")
}
db.AutoMigrate(&Person{})
}
func create(name string, age int) {
db, err := gorm.Open("sqlite3", "test.sqlite3")
if err != nil {
panic("failed to connect database\n")
}
db.Create(&Person{Name: name, Age: age})
}
func get_all() []Person {
db, err := gorm.Open("sqlite3", "test.sqlite3")
if err != nil {
panic("failed to connect database\n")
}
var people []Person
db.Find(&people)
return people
}
func main() {
r := gin.Default()
r.LoadHTMLGlob("templates/*")
db_init()
r.GET("/", func(c *gin.Context) {
people := get_all()
c.HTML(200, "index.tmpl", gin.H{
"people": people,
})
})
r.POST("/new", func(c *gin.Context) {
name := c.PostForm("name")
age, _ := strconv.Atoi(c.PostForm("age"))
create(name, age)
c.Redirect(302, "/")
})
r.Run()
}
주안점go run main.go
후name,age의 데이터를create() 함수에 전달하고 기록/new
최종 방향 변경/new
index.tmpl 편집
index.tmpl
<html>
<head>
<title>The first app on Gin WAF </title>
</head>
<body>
<h1> 一覧</h1>
<form method="post" action="/new">
<p>名前<input type="text" name="name" size="30" placeholder="入力してください" ></p>
<p>年齢<input type="number" name="age" ></p>
<p><input type="submit" value="Send"></p>
</form>
<ul>
{{ range .people }}
<li>{{.Name}}さん{{.Age}}才</li>
{{ end }}
</ul>
</body>
</html>
주안점감상
어제부터 Go를 시작했기 때문에 "여기에 이렇게 써도 괜찮을까?"라는 불안감이 들었다.
처음에는 쓰기에 전혀 익숙하지 않아 재미는 없었지만 점점 즐거워졌다.
나는 좀 더 유창하게 쓰고 싶다.
참고 문헌
Reference
이 문제에 관하여(Golang Start Gin 및 GORM WebApp), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Anharu/items/ce644c521a4d52fafb7e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Golang Start Gin 및 GORM WebApp), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Anharu/items/ce644c521a4d52fafb7e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)