sql 转gorm https://sql2gorm.mccode.info/
json 转 struct https://mholt.github.io/json-to-go/
驼峰转下划线 https://www.nhooo.com/tool/camelcase/
xml 转结构体 http://www.cyeam.com/tool/xml2gostruct
go 包 https://pkg.go.dev/
go 学习网站 https://www.topgoer.com/
下载地址:https://golang.google.cn/dl/
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
go 环境变量: 这只是暂时添加
可以编辑 ~/.bash_profile 或者 /etc/profile,并将以下命令添加该文件的末尾,这样就永久生效了
如果root 与 普通用户 gopath不一致问题 可以精确路径设置
export GOROOT=/usr/local/go
export GOPATH=$GOROOT/goproject
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin
最后执行:source ~/.bash_profile 或者 source /etc/profile
在GOPATH 路径下;新建src 放项目
设置go 软连接
sudo ln -fs /usr/local/go/bin/go /usr/local/bin/go
优势:利用了服务器的多核能力,内存占用降低
1、相较php go运行更快;相同用户数下可以提供更高的承载与更小的硬件投入
2、比php更容易部署,go静态编译好后将编译文件放到服务即可直接运行
3、比php更安全,php弱类型语言,go是 一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言
4、Go 语言运行时会参与调度 goroutine,并将 goroutine 合理地分配到每个 CPU 中,最大限度地使用CPU性能。开启一个goroutine的消耗非常小(大约2KB的内存),你可以轻松创建数百万个goroutine。
缺点:go开发速度不如php,php某些方面可以节省代码量
package main
import "fmt"
func main() {
var p *int
p = new(int)
*p = 1
fmt.Println(p, &p, *p)
}
输出
0xc04204a080 0xc042068018 1
在 Go 中 * 代表取指针地址中存的值,& 代表取一个值的地址
对于指针,我们一定要明白指针储存的是一个值的地址,但本身这个指针也需要地址来储存
如上 p 是一个指针,他的值为内存地址 0xc04204a080
而 p 的内存地址为 0xc042068018
内存地址 0xc04204a080 储存的值为 1
地址 0xc042068018 0xc04204a080
值 0xc04204a080 1
端口号被占用 :
lsof -i:8080
kill -9 +进程id
goctl 命令生成的文件 不会自动传到虚拟机里;用手动上传一下
go 错误查看:
panic.go 下边就是报错位置
- 字符串有两个域 (一个指向字符串数据的指针和一个长度)
- 切片有三个域 (一个指向底层数组的指针,一个长度,一个容量)
- 接口有两个域 (一个指向类型的指针和一个指向值的指针)
直接运行测试方法
go test -run TestPassEncode -v
标签:www,0xc04204a080,笔记,学习,https,go,php,指针 From: https://blog.51cto.com/u_16221639/7032556