golang 初体验

介绍

Golang 学习开始!
目标:编写一个golang web项目 goblog
以下博文需要你懂一些基本的编程知识 如:对象 if switch 变量….
以下博文都是为了这个目标而编写….

Golang 创建一个简单的web程序

注意:golang程序中只能使用 “”双引号
使用golang基本库fmt net/http

import (
    "fmt"
    "net/http"
)

创建文件main.go 这个文件是go 程序的入口文件必须定义

// main文件必须定义  package main代表其是入口文件
// 接下来的代码示例将省略这个文件头 用...表示
package main

// 你的代码业务逻辑
func main() {

}

使用net/http 创建一个简单的web程序 输出:hello golang

...
// 另一个写法 import "net/http" 只引入一个包、库
import {
    "net/http"
    "fmt"
}

// 处理请求  w & r  代表此方法必须实现的两个参数
// http.ResponseWriter 这个你需要响应的对象 例如 fmt.Fprint(w,"hello golang")
// http.Request 这个是客户端的请求信息
func handleFunc(w http.ResponseWriter, r *http.Request){
    // 响应请求 并写入响应信息
    fmt.Fprint(w,"hello golang")
}

func main() {
    // ‘/’ 可理解为 ‘根’请求 
    http.HandleFunc("/",handleFunc)
    // 8080为监听端口 nil暂时可不管
    http.listenAndServe(":8080",nil)
}

路由

上面的例子我们编写了一个简单的web程序 我们现在来给这个程序添加一些路由让这个程序响应不同的请求

...
func handlerFunc(w http.ResponseWriter, r *http.Request){
    // 定义一个变量 
    // golang和PHP的不同是 单独定义变量必须定义变量类型 
    // 下面的代码可以写成  Wstr := "" 可省略 var 关键字
    var Wstr string

    // r http.Request 在该对象中取出用户的请求链接
    // 这里不建议使用if(条件太多没法记) 
    switch r.URL.Path {
    case "/":
       Wstr = "<h1>Hello, 这里是 goblog!</h1>"
      break
    case "/about":
       Wstr = "此博客是用以记录编程笔记,如您有反馈或建议,请联系 "+
          "<a href=\"mailto:summer@example.com\">summer@example.com</a>"
      break
    default:
       Wstr = "<h1>请求页面未找到 :(</h1>"+
          "<p>如有疑惑,请联系我们。</p>"
    }

    // 打印信息到请求
    fmt.Fprint(w,Wstr)
}

...

响应类型及状态码 Content-Type 参考

    // 响应404
    // http.StatusNotFound 为http包 预定义的状态码  你也可以写成这样 w.WriteHeader(404)
    w.WriteHeader(http.StatusNotFound)
    // 响应类型 Content-Type 以下代码表示响应内容为 html  charset编码
    //当然你也可以设置为其它,参考该链接:https://tool.oschina.net/commons/ 
    w.Header().Set("Content-Type","text/html; charset=utf-8")

其它

设置请求代理

默认golang的代理是官方的链接 以下命令可查看golang默认配置

go env

更改

go env -w  GOPROXY=https://goproxy.cn

godoc 离线文档

下载

go get golang.org/x/tools/cmd/godoc

使用 6060端口号

godoc -http=:6060

需要注意的是这个文档全是英文 中文版的要自己找!

自动重载

主要解决问题是频繁的停止&&重新编译
下载&&安装

go get -u github.com/cosmtrek/air

使用

air

查看版本

air -v

不知道为啥 我使用air -v 展示的是下面这样的

没有版本号….不过不影响使用

结语

多看文档、多看教程…
暂时分享到这里

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!