zoukankan      html  css  js  c++  java
  • golang语法学习遇到的坑

    一.golang的命名规范及大小写的访问权限

    1、golang的命名推荐使用驼峰命名法,必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线。

    2、golang中根据首字母的大小写来确定可以访问的权限。无论是方法名、常量、变量名还是结构体的名称,如果首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包中使用

      可以简单的理解成,首字母大写是公有的,首字母小写是私有的

    3、结构体中属性名的大写

    如果属性名小写则在数据解析(如json解析,或将结构体作为请求或访问参数)时无法解析

    type User struct {

            name string

            age  int

     }

    func main() {

             user:=User{"Tom",18}

             if userJSON,err:=json.Marshal(user);err==nil{

               fmt.Println(string(userJSON))   //数据无法解析

            }

    }

     4. 结构体与 JSON 的映射

    JSON 中的标签由两部分组成,如下所示的 name 和 age 都是标签名,后面的所有的字符串是标签选项,即 encoding/json.tagOptions,标签名和字段名会建立一一对应的关系,后面的标签选项也会影响编解码的过程:

    type Author struct {
        Name string `json:"name,omitempty"`
        Age  int32  `json:"age,string,omitempty"`
    }
    

    常见的两个标签是 string 和 omitempty,前者表示当前的整数或者浮点数是由 JSON 中的字符串表示的,而另一个字段 omitempty 会在字段为零值时,直接在生成的 JSON 中忽略对应的键值对,例如:"age": 0"author": "" 等。标准库会使用 encoding/json.parseTag 函数来解析标签:

    func parseTag(tag string) (string, tagOptions) {
    	if idx := strings.Index(tag, ","); idx != -1 {
    		return tag[:idx], tagOptions(tag[idx+1:])
    	}
    	return tag, tagOptions("")
    }
    

    从该方法的实现中,我们能分析出 JSON 标准库中的合法标签是什么形式的 — 标签名和标签选项都以 , 连接,最前面的字符串为标签名,后面的都是标签选项。


    参考链接:https://blog.csdn.net/skh2015java/java/article/details/54316195

    https://draveness.me/golang/docs/part4-advanced/ch09-stdlib/golang-json/

  • 相关阅读:
    关于基础排序算法的思考--插入排序
    关于购物车的多层复选全选
    随便写写
    第一篇小博文
    C# 遍历目录下所有文件方法
    C#驱动MongoDB官方中查询条件Query用法
    mongodb 修改远程连接
    Python 爬虫练习低调163疫情数据辽宁地图
    jquery easyui datagrid drop事件执行顺序
    https request报错 ServicePointManager.SecurityProtocol 搞定
  • 原文地址:https://www.cnblogs.com/yuluoxingkong/p/13260014.html
Copyright © 2011-2022 走看看