golang 初体验

Golang
490
0
0
2022-04-14
标签   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>"breakcase "/about":
       Wstr = "此博客是用以记录编程笔记,如您有反馈或建议,请联系 "+"<a href=\"mailto:summer@example.com\">summer@example.com</a>"breakdefault:
       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 展示的是下面这样的

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

结语

多看文档、多看教程…

暂时分享到这里