当前位置: 首页 > news >正文

做代码和网站宝塔设置加速wordpress站点

做代码和网站,宝塔设置加速wordpress站点,建设商务网站的步骤,2021谷歌搜索入口1. 定义 在 Go 语言中#xff0c;匿名结构体#xff08;Anonymous Struct#xff09;是一种没有显式命名的结构体类型。你可以直接在代码中定义并使用匿名结构体#xff0c;而不需要为其定义一个单独的类型名称。匿名结构体通常用于临时数据结构或一次性使用的场景。 匿名…1. 定义 在 Go 语言中匿名结构体Anonymous Struct是一种没有显式命名的结构体类型。你可以直接在代码中定义并使用匿名结构体而不需要为其定义一个单独的类型名称。匿名结构体通常用于临时数据结构或一次性使用的场景。 匿名行为的设计带来了一些理解上的困难但是熟悉了匿名设计的使用后你会发现匿名设计在某些特定场景可以帮助大家写出更简洁、更优雅、更高效和更安全的代码。 2. 代码使用示例 2.1 简单示例 package mainimport (fmt )func main() {// 定义并初始化一个匿名结构体person : struct {Name stringAge int}{Name: Alice,Age: 30,}// 打印匿名结构体的字段fmt.Println(Name:, person.Name)fmt.Println(Age:, person.Age) } 结果 Name: Alice Age: 30在这个示例中struct { Name string; Age int } 定义了一个匿名结构体类型并直接初始化了一个 person 变量。你可以像访问普通结构体一样访问匿名结构体的字段。 2.2 匿名结构体的嵌套 你也可以在匿名结构体中嵌套其他匿名结构体 package mainimport (fmt )func main() {// 定义并初始化一个嵌套的匿名结构体employee : struct {Name stringAge intAddress struct {City stringState string}}{Name: Bob,Age: 25,Address: struct {City stringState string}{City: New York,State: NY,},}// 打印嵌套的匿名结构体的字段fmt.Println(Name:, employee.Name)fmt.Println(Age:, employee.Age)fmt.Println(City:, employee.Address.City)fmt.Println(State:, employee.Address.State) }结果 Name: Bob Age: 25 City: New York State: NY在这个示例中employee 是一个包含嵌套匿名结构体的匿名结构体。你可以通过 employee.Address.City 和 employee.Address.State 访问嵌套结构体的字段。 2.3 总结 struct { ... }定义一个匿名结构体类型。匿名结构体通常用于临时数据结构或一次性使用的场景。你可以在匿名结构体中嵌套其他匿名结构体。通过使用匿名结构体你可以在 Go 程序中方便地定义和使用临时数据结构而无需为其定义单独的类型名称。 3. 使用场景 3.1 造测试数据 匿名结构体可以和切片结合起来使用通常用于创建一组测试数据。 package mainimport fmtfunc main() {// 测试数据var people []struct {Name stringAge int}{{Li, 31},{Yang, 28},{Liu, 27},{Tong, 30},}fmt.Println(people) }结果 [{Li 31} {Yang 28} {Liu 27} {Tong 30}]3.2 处理Json 将一个json串转化为map[string]interface{})结构 package mainimport (encoding/jsonfmtreflect )const jsonStr { name:Liuhui, id:712364567213544422 }func main() {obj : make(map[string]interface{})_ json.Unmarshal([]byte(jsonStr), obj)fmt.Printf(%v\n, obj)fmt.Println(-------------------)objBytes, _ : json.Marshal(obj)fmt.Println(string(objBytes))fmt.Printf(%v\n, reflect.TypeOf(obj[id]).Name()) } 结果(可以看到精度丢失) map[id:7.123645672135444e17 name:Liuhui] ------------------- {id:712364567213544400,name:Liuhui} float64在当前代码中json.Unmarshal 将 JSON 数据解析到一个 map[string]interface{} 中。由于 interface{} 类型可以表示任何 Go 类型因此在解析 JSON 时Go 会根据 JSON 值的类型自动选择合适的 Go 类型。对于大整数如 712364567213544422Go 默认会将其解析为 float64 类型。为什么会丢失精度 float64 的精度限制float64 类型在表示大整数时可能会丢失精度。float64 使用 64 位来表示数值其中一部分用于表示指数因此对于非常大的整数float64 无法精确表示。 interface{} 的类型推断当 JSON 中的整数非常大时json.Unmarshal 会将其解析为 float64因为 float64 可以表示比 int64 更大的数值范围。然而float64 的精度不足以精确表示所有大整数从而导致精度丢失。 如何避免精度丢失 为了避免精度丢失可以使用匿名结构体来解析 JSON 数据并明确指定整数类型的字段。例如 package mainimport (encoding/jsonfmt )const jsonStr { name:Liuhui, id:712364567213544422 }func main() {obj : struct {Name string json:nameId int64 json:id}{}_ json.Unmarshal([]byte(jsonStr), obj)fmt.Printf(%v\n, obj)fmt.Println(-------------------)objBytes, _ : json.Marshal(obj)fmt.Println(string(objBytes)) } 结果 {Name:Liuhui Id:712364567213544422} ------------------- {name:Liuhui,id:712364567213544422}嵌套的 JSON 对于嵌套的 JSON,也可以使用内嵌的匿名结构体来解析: package mainimport (encoding/jsonfmt )const jsonStr { name:Liuhui, id:712364567213544422, job:{ Company:DouYin} }func main() {obj : struct {Name string json:nameId int64 json:idJob struct {Company string json:company} json:job}{}_ json.Unmarshal([]byte(jsonStr), obj)fmt.Printf(%v\n, obj)fmt.Println(-------------------)objBytes, _ : json.Marshal(obj)fmt.Println(string(objBytes)) } 结果 {Name:Liuhui Id:712364567213544422 Job:{Company:DouYin}} ------------------- {name:Liuhui,id:712364567213544422,jobc:{company:DouYin}}3.3 嵌套锁 我们经常遇到多个goroutine要操作共享变量为了并发安全需要对共享变量的读写加锁。 这个时候通常需要定义一个和共享变量配套的锁来保护共享变量。 匿名结构体和匿名字段相结合可以写出更优雅的代码来保护匿名结构体里的共享变量实现并发安全。 package mainimport (fmtsync )func main() {// hits 匿名结构体变量// 这里同时用到了匿名结构体和匿名字段, sync.Mutex是匿名字段// 因为匿名结构体嵌套了sync.Mutex所以就有了sync.Mutex的Lock和Unlock方法var hits struct {sync.Mutexn int}var wg sync.WaitGroupN : 1000// 启动100个goroutine对匿名结构体的成员n同时做读写操作wg.Add(N)for i : 0; i 1000; i {go func() {defer wg.Done()hits.Lock()defer hits.Unlock()hits.n}()}wg.Wait()fmt.Println(hits.n) // 1000 } 4. 总结 匿名结构体可以让我们不用先定义结构体类型再定义结构体变量。让结构体的定义和变量的定义可以结合在一起一次性完成。 匿名结构体有以下应用场景 构造测试数据处理Json嵌套锁
http://www.w-s-a.com/news/103639/

相关文章:

  • 安庆网站建设兼职中企动力是500强吗
  • 网站排名优化技巧基于网站的网络营销方法有哪些
  • 摄影素材网站做知识问答的网站
  • 中小企业网站建设济南兴田德润电话门店管理系统软件排行
  • 昆明工程建设信息网站柳州网站建设公司哪家好
  • 如何分析网站关键词北京门户网站网址
  • 做网站与做游戏那个好网站域名怎么起
  • 有没有做cad单的网站银行网站建设方案视频
  • 和各大网站做视频的工作高校网站群管理系统
  • 中国建设人才服务信息网是正规网站怎么注销自己名下的公司
  • 网站开发新型技术那些网站做任务领q币
  • 海口手机网站建设wordpress微支付宝
  • 做公司网站需要几天深圳自定义网站开发
  • 做网站学多长时间可以学会推广软件公司
  • 网络网站设计培训长沙建站模板大全
  • 站群搭建移动端处理器天梯图
  • 岳池发展建设集团有限公司门户网站湛江seo咨询
  • 手机网站工具关键词排名是什么意思
  • 游民星空是谁做的网站沈阳网站托管公司
  • 做网站搭建需要什么人vs2017移动网站开发
  • 购物网站开发需要什么技术怎么查看网站是否备案
  • 学做电商那个网站好网站建设投票主题
  • 中卫网站推广网络营销毕业设计做网站大小有什么要求
  • 做问卷网站义乌网站建设推广专家
  • 不会编程怎样建设网站昆明做网站哪家
  • 直播网站模板新营销平台电商网站
  • 建设部指定招标网站免费的企业查询软件
  • 做前端常用的网站及软件下载平台优化是什么意思
  • 企石镇仿做网站wordpress 网站白屏
  • 班级网站建设规划书专业定制网红变色杯