golang

https://godoc.org

https://github.com/avelino/awesome-go

命令源码文件(main)与库源码文件处同一代码包中,不能go build /go install,

同一代码包中可以有多个命令源码文件,可以go run,但不能build/install,所以一个命令一个包,build 生成在当前目录,intall 生成在bin或/pkg目录

如果文件名与package名不同,文件第一行一定要package xxx

import(

. “xx” #可以使用xx中的内容,就不用前缀了

_ “xx” #只触发了init操作,什么也没导入

)

func init(){} 包初始化方法 在main()之前完成,且只执行一次

全局变量初始化->init->main

类型断言 x.(t) t为interface

interface{}(123).(int)

[…]string{“go”,”python”} #不写长度有,由初始值确定

go 语方中中只有传值,没有传引用

delete(mapname,key) #删除map的key

go test #文件为xx_test.go ; testxx(t *testing.T,xx)

GOROOT /GOPATH

go get 下载到gopath指定第一个,并完成构建和安装

export PATH=$PATH:${GOPATH//://bin:}/bin
export GOBIN=

go env

https://github.com/hyper-carrot/go_command_tutorial

golang有两个特殊的包名称 all,std
all 代表GOPATH中所有工作区路径中所有代码包,std 标准库中的所有代码
import/package
chan/func/interface/map/struct/const/type/var
go/select/break/case/continue/defalut/defer/else/fallthrough/for/goto/if/range/return/switch

:= //申明一个变量,同时赋值,只能在函数体内用

切片的长度就是它所包含的元素个数。

defer 语句会将函数推迟到外层函数返回之后执行

切片的容量是从它的第一个元素开始数,到其底层数组元素末尾的个数

https://go-zh.org/pkg/builtin/
for 循环的 range 形式可遍历切片或映射
godoc -http=:8080

4form

r.Form["username"]也可写成r.FormValue("username")。调用 r.FormValue 时会自动调用
r.ParseForm,所以不必提前调用。r.FormValue只会返回同名参数中的第一个,若参数不存
在则返回空字符串

getint,err:=strconv.Atoi(r.Form.Get("age"))

//中文

if m, _ := regexp.MatchString("^[\x{4e00}-\x{9fa5}]+$", r.Form.Get("realname")); !m {
return false
}

maps, slices 和 channels 引用语义,用make分配空间

struct,array等值类型,用new分配空间

x := []int{1, 2, 3}
y := []int{4, 5, 6}

x = append(x, y...)

int( x )   //x 转为int

<-chan int (x ) // x转为chan int,再取数据

(<-chan int )(x ) //x 转为只能取数据的chan int

Go语言的字符串是UTF-8编码,其底层使用4个字节表示,也就是32 bit

func (x type) string() string{}  // 定义String()方法,自定义了格式化指令%v的输出

原文地址:https://www.cnblogs.com/anjuncc/p/5535647.html