开发知识点-golang

本文介绍了Go语言的标准库,包括bytes、fmt、io等,并涉及到环境配置,如win10和Ubuntu的Go环境搭建,以及Go模块、变量、常量、枚举、关键字的使用。同时提到了代码混淆、静态检查工具staticcheck和WailsJS前端框架。
摘要由CSDN通过智能技术生成

在这里插入图片描述

Go 语言的高性能框架 fasthttp 排名9, 成绩是 1,219,876 QPS, 性能是 libreactor 的65.3%.

PHP框架 swoole 排名76, 成绩是 206,522 QPS, 性能是 libreactor 的 11.1%.

顺便我们还可以看到一些其他的熟悉的框架的成绩:

netty 排名26, 成绩是 873,660 QPS.

openresty 排名90, 成绩是 178,374 QPS.

直接使用 nginx 输出, 排名 62, 成绩是 306,772 QPS.

直接使用 nodejs 输出, 排名 100, 成绩是 148,330 QPS.

直接使用 go 语言的net库输出, 排名是 112, 成绩是 118,809 QPS.

beego 框架, 排名 144, 成绩是 85,015 QPS.

spring 框架, 排名 211, 成绩是 31,620 QPS.

直接用 php 搭配 nginx输出, 排名226, 成绩是 26,281 QPS.

django-py3 19,089 QPS.

flask 13,507 QPS.

swoole 搭配 laravel, 7,113 QPS.

Yii 2, 5,855 QPS.

symfony, 3,335 QPS.

纯 laravel, 1,525 QPS.

标准库

bytes

fmt

io

ioioutil

os

osexec

path

sync

第三方包

github.com/qianlnk/pgbar
github.com/rakyll/statik/fs

gui

github.com/webview/webview

init

下载网址:https://golang.google.cn/dl/


go  version

Go工作目录及包创建

电脑任意一个地方新建一个文件夹(名字自己根据需要随意取)作为以后的go的工作目录

同时在该文件夹下,建立三个子文件夹
bin	   二进制执行文件
pkg	   包文件
src    源代码

一个GO工程主要包含以下三个目录



初始化

执行如下命令之后,会在当前目录下生成一个go.mod文件,这是一个关键文件,之后的包的管理都是通过这个文件管理。

go mod init src
PS E:\code\go_test> go mod init src
go: creating new go.mod: module src
go: to add module requirements and sums:
        go mod tidy

Go环境变量配置

右键“此电脑” - 属性 - 高级 - 环境变量 - 系统变量

检查系统变量配置到Path中(若安装时勾选了添加path,那就默认有啦):
G:\envir\base\golang\bin
GOROOT


系统变量下 新建变量名:GOPATH 变量值(变量值 取上面我们创建的go工作目录路径):  E:\code\go_test
将用户变量下 自动生成的GOPATH变量值 同样修改成自己设置的路径:   %USERPROFILE%\go  ->  E:\code\go_test
 



完成以上配置后,查看环境变量配置是否成功:

go env




如果你在运行go env命令时遇到了$GOPATH/go.mod exists but should not的错误,可能是由于以下原因之一:

Go模块已经启用:在Go 1.11及更高版本中,引入了Go模块的概念以管理依赖关系。如果你的项目文件夹中存在go.mod文件,那么Go会将该项目视为模块。在模块模式下,$GOPATH变量不再被使用。相反,Go会在项目文件夹内创建一个专门的模块目录来存放依赖项。

解决方法:如果你的项目已经使用Go模块进行管理,你可以在项目根目录下继续使用模块管理方式。只需将go mod命令用于构建、测试和运行你的项目即可。不需要再关注$GOPATH变量。

在GOPATH中错误地放置了go.mod文件:如果你的项目不是一个Go模块,并且在$GOPATH目录下放置了go.mod文件,那么会导致上述错误。

解决方法:如果你的项目不是一个Go模块,请确保将go.mod文件从$GOPATH目录中移除。可以使用以下命令删除该文件:

bash
rm $GOPATH/go.mod










go里面的包管理不尽如人意,但从go1.11以后就有所好转

要用的就是go module方式

控制我们需要导入哪些第三方库的工具
编程语言 Go Java Python NodeJS
包管理工具 Go Module Maven venv npm
go mod代表使用go module, init代表初始化
    
go mod init fackscan
创建一个golang项目。
    
想解决里面的依赖,你可以用go mod tidy
编程语言 Go Java Python NodeJS
安装依赖 go mod tidy maven install pip install npm install
依赖文件 go.mod pom.xml requirements.txt package.json

module youhuo,说的是这个项目的名称

go module是go管理依赖的一种方式,类似于Java的maven和Python的pip,而我们可以用


fmt 是一个go自带的用于输出输出常用的库。print前需要导入。
 https://github.com/TideSec/BypassAntiVirus/blob/master/77.%E8%BF%9C%E6%8E%A7%E5%85%8D%E6%9D%80%E4%B8%93%E9%A2%98(77)-%E5%9F%BA%E4%BA%8EGo%E7%9A%84%E5%85%8D%E6%9D%80%E5%B0%8F%E7%BB%93.pdf


若有两个模块A和B,两个模块均在本地,且A和B在同一个目录下,在B调用A时,直接在B中如下引入A模块,会报找不到A模块的错误:

import "A"
如何解决呢?可以使用go mod edit指令,如下:

go mod edit -replace A=../A
这个指令会对A模块的调用指定为对本地A模块的调用,执行完此命令后,在go.mod文件中,会生成一条如下记录:

replace A => ../A
使用

go mod tidy
来同步B模块的依赖,运行后,在go.mod文件中,会多一条记录,如下:

require (
	A v0.0.0-00010101000000-000000000000
) 




go mod init X-scan



比如安装go jdk在D盘D:\golang\bin
建议将项目放在D:\golang\src目录下,这时候直接可以读取GOPATH为D:\golang\src,此时引入自定义包路径即为自己项目名称+具体包路径

1.第一种比较笨的方式:比如可以在D:\golang\src下建一个项目my-project
my-project目录层级如下:
main/main.go
utils/utils.go

main.go调用自定义包utils包的方法GetSum

package main

import (
	"fmt"
	"my-project/utils"
)

func main() {
   
	var result int = utils.GetSum(100, 200)
	fmt.Println(result)
}
 
utils.go包下可以自定义包名和函数GetSum

package utils

func GetSum(a int, b int) int {
   
	return a + b
}
 
2.第二种使用go.mod的方式,项目比较推荐
早在终端输入命令:go mod init 后面一般跟git项目路径即可

执行完go mod init github.com/golang/go-web命令生成 go.mod文件大致如下,后面这只是虚拟个人git项目地址,根据个人项目情况而定:

module github.com/golang/go-web
go 1.20

 
导入包测试
新建一个testModule/test.go

package testModule

func CountSum(a int, b int) int {
   
	return a + b
}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值