go语言学习笔记(二)

1、golang在web领域的应用

2、一个非常简单的例子,之后再讲讲我的理解。(PS:写完了这两行,我打开了goland,准备写两行代码。为什么我会直接就开始写呢,因为之前写过一点点,从golang官网上学的)

 

 3、我新建了一个工程,并且创建了三个目录和一个main.go的源文件,我写下了main函数,当我要写sayHelloHandle函数时我想到了:我似乎不会写说如何把"hello world"这个字符串返回给浏览器。因为之前做的时候是写了一个html页面,然后使用http/template模板渲染之后返回的。但是如果我不想使用http/template模板渲染,我就不知道怎么做了。

4、我想尝试这种方式能不能成功返回。但是在完善main函数是我忘记了怎么写监听端口了。于是查了一下之前写的代码。

 

 5、最终我的代码是这样的:

 

 6、运行起来之后,可以从浏览器中成功访问http://localhost:8080/hello,并在浏览器中打印出"hello world"字符串。

 

7、打印出"hello world"字符串是为了致敬C语言,我踏足编程语言世界的第一个代码就是打印"hello world"。

8、因为再写这个例子的时候,遇到了一些问题,我已经忘记了,在写本文第二点时想要描述的理解了。

9、从工程结构上看,最顶层是一个名叫"note01"的文件夹,然后该文件夹下面是三个子文件夹,分别是"bin","pkg","src"。main.go文件放在src文件夹中。

10、main.go中有两个函数:main()和sayHelloHandle()。main()函数中第9行描述了http的请求路径是"/hello",请求之后的响应函数是"sayHelloHandle()"函数。第10行中描述了程序需要监听的端口是"8080","http.ListenAndServer"函数的第二个参数目前我也不知道是干什么用的。

11、前面第3点中,讲到了我不知道怎么写下去了。然后我为什么会有这种想法说要写出第5点中的代码呢。我是这样想的:请求的响应最终是以字符流的形式返回给浏览器的,所以我就去看了下w变量有没有write方法,果然有,而且传入参数是一个byte型的切片。于是我就尝试使用将一个字符串转换成byte型切片作为w.Write的参数。最终实现了我的想法之后达到了我的预期。并不清楚w.Write函数做了什么,不清楚这个函数向http的哪个部位写入了数据,为什么浏览器能够读取到我写入的数据。这些我仍然不清楚。

 12、以上是一个充满疑问但是成功运行起来的案例。正如很多场景下的人会说到,我不知道他是怎么运行起来的,但是他就是能够运行,并且满足我们的预期设想。这里面感觉又有一个哲学思想,下次再谈。我要买菜去了。

posted @ 2022-05-03 16:26  MenuX  阅读(30)  评论(0编辑  收藏  举报