青训营Day1-Go入门 | 青训营笔记

62 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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 基础语法

  1. 变量声明:
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)
  1. range遍历 遍历切片返回索引和值(for i, num := range nums) 遍历map返回key, value(for k, v := range m, for k := range m)
  2. 函数 变量类型后置 一般返回两个值(value type, ok bool)
  3. 指针 修改输入值
func andd2ptr(n *int){
    *n += 2
}
func main(){
    n := 5
    add2ptr(&n)
    fmt.Println(n) // 7
}
  1. 结构体-带类型的字段的集合(类似Java 类)
type user struct {
    name string
    passwork string
}

func (u *user) resetPassword(password string){
    u.password = password
}
  1. 错误处理 在函数的返回值类型加error

  2. 字符串处理 contains, count, index, etc. 格式化:%v打印任意类型变量 %+v, %#v

  3. json操作 json.Marshal()序列化buf字符串 json.Unmarchal()反序列化

  4. 事件处理 time.Now() time.Date()初始化时间 t.Format("2006-0102 15:04:05")格式化时间 time.Unix获取时间戳

  5. 数字解析 strconv包: strconv.ParseInt(str, 进制,精度)

  6. 进程信息 os, os/exec包