96SEO 2026-02-20 04:47 17
mod管理工程二、包引入规则三、init调用链四、可见性五、标准库1

$module_name$module_name和目录名可以不一样。
上述命令会生成go.mod文件
包查找规则Go依次从当前项目、GOROOT、GOPATH下寻找依赖包
从当前go文件所在的mode_path下里面定义了module_name则引入包的路径为module_name/包相对于mode_path的路径go标准库提供的包在GOROOT/src下第三方依赖包在GOPATH/pkg/mod下
get只负责下载第三方依赖包并把它加到go.mod文件里由go
github.com/mailru/easyjson会在GOPATH/pkg/modgo
github.com/mailru/easyjson/easyjson会在GOPATH/bin下生成easyjson二进制可执行文件
tidy通过扫描当前项目中的所有代码来添加未被记录的依赖至go.mod文件或从go.mod文件中删除不再被使用的依赖
xxx在包声明的上面可写关于包的注释包注释也可以专门写在doc.go里包名跟下所有go文件的包名必须一致
可以直接使用同使用则需要变量前加入包名并且引入包所在的名mypackage.Add()mypackage是包名它对应的也可以引用子前面可以给包起一个别名
main函数是go程序的唯一入口所以main函数只能存在一个main函数必须位于main包中在main函数执行之前会先执行init()函数在一个前加一个_代码里却没有显式地使用这个包里的函数或变量实际上是想执行这个包里的init()函数
以小写字母开头命名的函数、变量、结构体只能在本包内访问以大写字母开头命名的函数、变量、结构体在其他包中也可以访问如果结构体名字以大写字母开头而其成员变量、成员方法以小写字母开头则这样的成员只能在本包内访问
Go中命名为internal的package可以被平级所访问更上层的internal的上一级之间可以任意import但a不能import
time.Now()fmt.Println(now.Unix())
1677915658fmt.Println(now.UnixMilli())
1677915658844fmt.Println(now.UnixMicro())
1677915658844888fmt.Println(now.UnixNano())
1677915658844888900fmt.Println(now.Weekday().String())fmt.Println(now.Hour())fmt.Println(now.Minute())fmt.Println(now.Second())fmt.Println(now.Month())fmt.Println(int(now.Month()))
intfmt.Println(now.Year())fmt.Println(now.YearDay())
//当前年的第几天fmt.Println(now.Day())
//当前月的第几天fmt.Println(now.Date())
//计算时间差返回类型是time.Durationfmt.Println(useTime1.Seconds())
//0.000523fmt.Println(useTime1.Nanoseconds())
//523000fmt.Println(----------------------)//时间差计算方式2end
//计算时间差返回类型是time.Durationfmt.Println(useTime2.Seconds())
//0.000523fmt.Println(useTime2.Nanoseconds())
//523000fmt.Println(----------------------)//获取相对时间dua
begin.Add(dua)fmt.Println(end_dua)
此格式fmt.Println(begin.Format(TIME_FMT))
16:01:19fmt.Println(begin.Format(TIME_FMT1))
//2023-03-04fmt.Println(begin.Format(TIME_FMT2))
time.LoadLocation(Asia/Shanghai)if
time.ParseInLocation(TIME_FMT1,
//阻塞1秒钟fmt.Printf(第[%d]次执行,[%d]\n,
可以不需要time.DurationNanosecond也是Duration类型//
//阻塞3秒钟fmt.Println(time.Now().Unix())//或者用-time.After(3
//阻塞3秒钟fmt.Println(time.Now().Unix())
//阻塞3秒钟fmt.Println(time.Now().Unix())for
time.Second)//使用Reset可以多次使用Timer-tm.Cfmt.Println(time.Now().Unix())}
//自然对数的底2.718281828459045fmt.Println(math.Pi)
//圆周率3.141592653589793fmt.Println(math.MaxInt)
//9223372036854775807fmt.Println(uint64(math.MaxUint64))
{//常用函数fmt.Println(math.Ceil(1.1))
//向上取整2fmt.Println(math.Floor(1.9))
math.Floor(-1.9)-2fmt.Println(math.Trunc(1.9))
//取整数部分1fmt.Println(math.Modf(2.5))
//绝对值2.6fmt.Println(math.Max(4,
//取二者的较大者8fmt.Println(math.Min(4,
//取二者的较小者4fmt.Println(math.Mod(6.5,
//x-Trunc(x/y)*y结果的正负号和x相同3fmt.Println(math.Sqrt(9))
//开平方3fmt.Println(math.Cbrt(9))
//开三次方2.08008//对数和指数fmt.Println(math.Log(5))
//默认底数为自然对数math.E1.60943fmt.Println(math.Log1p(4))
//等价于Log(1p)确保结果为正数1.60943fmt.Println(math.Log10(100))
//以10为底数取对数2fmt.Println(math.Log2(8))
//以2为底数取对数3fmt.Println(math.Pow(3,
//x^y9fmt.Println(math.Pow10(2))
//10^x100fmt.Println(math.Exp(2))
//e^x7.389//三角函数fmt.Println(math.Sin(1))fmt.Println(math.Cos(1))fmt.Println(math.Tan(1))fmt.Println(math.Tanh(1))
{rand.Seed(time.Now().UnixMilli())
//如果对两次运行没有一致性要求可以不设seed随机种子fmt.Println(rand.Int())
//随机生成一个整数fmt.Println(rand.Float32())
//随机生成一个浮点数fmt.Println(rand.Intn(100))
//100以内的随机整数[0,100)fmt.Println(rand.Perm(100))
rand.NewSource(time.Now().UnixMicro())
//seed相同的情况下随机数生成器产生的数列是相同的rander
rander.Intn(100))}fmt.Println()source.Seed(time.Now().UnixMicro())
格式获得更简洁、准确的输出%s直接输出字符串或者字节数组%v值的默认格式表示%v类似
stringfmt.Scan(s2)fmt.Printf(you
n)buffer.WriteString(string(bs))}}fmt.Println(buffer.String())}
os.O_CREATE|os.O_TRUNC|os.O_WRONLY,
file.Close()file.Write([]byte(hello\n))}
os.O_CREATE|os.O_APPEND|os.O_WRONLY,
//使用bufio效率更高writer.WriteString(hello)
//只是把内容写到内存缓冲区writer.WriteString(\n)writer.Flush()
fs.FileMode)//增强版Mkdir沿途的重命名还可以实现move的功能os.Remove(name
string)//删除文件或不为空时才能删除成功os.RemoveAll(path
{os.Remove(lala.txt)os.MkdirAll(p1/p2,
0666)os.Create(p1/p2/lala.txt)os.RemoveAll(p1)os.Create(old.txt)os.Rename(old.txt,
os.Open(go.mod)fmt.Println(file.Name())
file.Stat()fmt.Println(info.IsDir())
//falsefmt.Println(info.ModTime())
//-rw-rw-rw-fmt.Println(info.Size())
{fmt.Println(fileInfo.Name())if
os.O_CREATE|os.O_APPEND|os.O_WRONLY,
log.Ldate|log.Lmicroseconds)logWriter.Println(hello)logWriter.Println(jack)logWriter.Println(tom)}
{fmt.Print(string(output))}}//不需要接收执行返回cmd
compresscompress包下实现了zlib、bzip、gip、lzw等压缩算法
os.O_CREATE|os.O_TRUNC|os.O_WRONLY,
{writer.Write(bs[:n])}}writer.Flush()//读压缩文件fin,
zlib.NewReader(fin)io.Copy(os.Stdout,
reader)reader.Close()fin.Close()
}jsonjson是go标准库里自带的序列化工具使用了反射效率比较低
easyjson只针对预先定义好的json结构体对输入的json字符串进行纯字符串的截取并将对应的json字段赋值给结构体easyjson
生成go文件中定义的结构体对应的解析xxx.go所在的package不能是main
base64经常在http环境下用来传输较长的信息任意byte数组都可以采用base64编码转为字符串并且可以反解回byte数组编码和解码的方法是公开、确定的
os.Open(C:/Users/nd/Desktop/Gopher.jpeg)bs
base64.StdEncoding.EncodeToString(bs[:n])fmt.Println(str)bbb,
base64.StdEncoding.DecodeString(str)fout,
os.O_CREATE|os.O_TRUNC|os.O_WRONLY,
0666)fout.Write(bbb)fout.Close()
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback