golang的首字符大写

有一得有一失

golang中首字母大写的变量、结构体、函数,都是可外部调用的,首字母小写的都是内部用。这点很简洁、很方便,不再用其它关键字来区别了,对比其它语言,golang的代码确实简单实用,开发效率高。但是也有不方便的地方,今天就遇到了,记录一下,加深印象。

在做的一个前后端分离的物联网平台,前端vue,后端golang,一个传递用户信息的接口/user/info,go中做了model结构如下:

package viewModels

type User struct {
	Roles        []string
	Introduction string
	Avatar       string
	Name         string
}

然后HTTP请求返回是这样的:

	data := viewModels.User{Roles: userRoles, Introduction: "", Avatar: avatar, Name: userName}

	c.JSON(http.StatusOK, gin.H{
		"code": code,
		"msg":  e.GetMsg(code),
		"data": data,
	})

这样通过http发给前端的报文里,response的data对象内是这样安排的:

Roles: (2) ["admin", "test", __ob__: Observer]
Introduction: ""
Avatar: "https://xyz/avatar.JPG"
Name: "admin"

发现里面的变量名都是和go后台的结构体一样,大写开头。一切都很简单方便不是?但是很不巧,在vue前台,之前写的各种代码都是用的小写:

{ roles, name, avatar, introduction }

所以,这里要么把前端的都撸成大写开头(工作不小啊),要么要新建个中转对象data:

const data = { roles: res.Roles, name: res.Name, avatar: res.Avatar, introduction: res.Introduction }

不简洁、不漂亮了! 当然,可以解决问题。 不可否认,博主才疏学浅,我相信肯定有比我这个更好的解决方法,大家可以尝试。

感悟:任何的设计,都是有一得有一失;人生的选择也是这样,得到了A,就会失去B,同时,失去了C,也会得到D。没有全面的赢家!

得到时,不要过分高兴,可能你没有意识到,也失去某些东西;

失去时,也不过分伤心,面对困难提高能力,得到了人生经验。


欢迎转载,但请附上原文地址哦,尊重原创,谢谢大家! 本文地址: https://blog.prodrich.com/detail/10/

带着使命来到世上的你,给他人提供价值,才有价值