这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
go实现简单服务器代码展示
首先,课程向我们展示了一个用go实现的简单服务器相应,对比之前经常使用Java EE实现服务器间接方便太多,上手非常容易。
package main
import {
"net/http"
}
func main() {
//http内置的路由:将"/"指向静态文件
http.Handle("/". http.FileServer(http.Dir(".")
//监听8080并启动服务器
http.ListenAndServe(":8080", nil)
}
go 环境及编辑器配置
在使用vscode进行go环境配置时,总无法更新下go工具,即“Go: Install/Update Tools”失败 而这个工具失败我们即无法通过鼠标浮动在源代码上获得方法说明 在这里我们需要为go开发配置环境变量,在命令行中输入
PS C:\Users\xxx> go env -w GO111MODULE=on
PS C:\Users\xxx> go env -w GOPROXY=https://goproxy.cn
并且从studygolang.com/dl 下载go的对应版本 这样即可正常在VScode使用go
go 基础语法
- 变量声明:
var b int = 1, 2
c = float32(b)
const s string = "constant"
常量没有固定的类型 2. 循环: 无 while与do while 3. switch case: 默认有break 可以取代任意if-else: switch 后不加变量, case后加任意分支 4. 切片(可变长度的数组)
s := make([]string, 3)
s = append(s, "d")
不支持负数索引 5. map
m := make(map[string]int)
- range遍历 遍历切片返回索引和值(for i, num := range nums) 遍历map返回key, value(for k, v := range m, for k := range m)
- 函数 变量类型后置 一般返回两个值(value type, ok bool)
- 指针 修改输入值
func andd2ptr(n *int){
*n += 2
}
func main(){
n := 5
add2ptr(&n)
fmt.Println(n) // 7
}
- 结构体-带类型的字段的集合(类似Java 类)
type user struct {
name string
passwork string
}
func (u *user) resetPassword(password string){
u.password = password
}
-
错误处理 在函数的返回值类型加error
-
字符串处理 contains, count, index, etc. 格式化:%v打印任意类型变量 %+v, %#v
-
json操作 json.Marshal()序列化buf字符串 json.Unmarchal()反序列化
-
事件处理 time.Now() time.Date()初始化时间 t.Format("2006-0102 15:04:05")格式化时间 time.Unix获取时间戳
-
数字解析 strconv包: strconv.ParseInt(str, 进制,精度)
-
进程信息 os, os/exec包