3

go语言defer的使用:Go语言的defer(延迟执行)语句,是在函数结束前执行,而如果在函数中有多个defer语句时,会像一个堆栈一样,先进后出,后进先出。defer语句在进行一些打开资源的操作时,遇到错误需要提前返回,在返回前你需要关闭相应的资源,不然很容易造成资源泄露等问题上很试用。

 

举个defer语句简单的使用如下:

 

package main

 

import "fmt"

func funca()  {

   fmt.Println("test funca")

}

func funcb()  {

   fmt.Println("test funcb")

}

//当funcc执行完,也就是输出test funcc时,才会去调用funca和funcb,而且是先调用funcb

 func funcc()  {

   defer funca()

   defer funcb()

   fmt.Println("test funcc")

   //return

}

func main() {

   funcc()

   //因为defer是在main函数中的,所以要等main函数结束前才执行。

   for i:=0;i<6;i++{

      defer fmt.Println(i)

   }

   fmt.Println("test main func")

}

所以最终输出的结果是

 test funcc

test funcb

test funca

test main func

5

4

3

2

1

0

 

  1. Http协议下的浏览器与服务器的交互

https://blog.csdn.net/u012058778/article/details/50087389

 

  1. Go语言进行web开发(一) 搭建一个简单的web服务器

https://blog.csdn.net/thinkerleo1997/article/details/78186777

 

 

方法1:

package main

import (

    "fmt"

    "net/http"

    "log"

)

 

func responseHello(w http.ResponseWriter, r *http.Request){

    //将字符串发送给客户端

    fmt.Fprintf(w, "Hello Golang!")

}

func main(){

    //设置要解析的URL路由

    http.HandleFunc("/", responseHello)

    //设置监听的端口,开始监听

    errInfo := http.ListenAndServe(":8080", nil)

    if errInfo != nil {

        log.Fatal("ListenAndServe: ", errInfo)

    }

}

网页输入:localhost8080

方法2

package main

import (

         "fmt"

         "net/http"

         "strings"

         "log"

)

func sayhelloName(w http.ResponseWriter, r *http.Request) {

         r.ParseForm() //解析参数,默认是不会解析的

         fmt.Println(r.Form) //这些信息是输出到服务器端的打印信息

         fmt.Println("path", r.URL.Path)

         fmt.Println("scheme", r.URL.Scheme)

         fmt.Println(r.Form["url_long"])

         for k, v := range r.Form {

                   fmt.Println("key:", k)

                   fmt.Println("val:", strings.Join(v, ""))

         }

         fmt.Fprintf(w, "Hello go web server") //这个写入到w的是输出到客户端的

}

func main() {

         http.HandleFunc("/.web.go", sayhelloName) //设置访问的路由

         err := http.ListenAndServe(":9090", nil) //设置监听的端口

         if err != nil {

                   log.Fatal("ListenAndServe: ", err)

         }

}

网页输入:localhost9090/.web.go

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值