首页 技术 正文
技术 2022年11月11日
0 收藏 786 点赞 3,654 浏览 1481 个字

1.go里通过首字母大小写来区分它是私有的还是公有的,比如对于一个结构体属性一般就以大写开头(和Java不一样,不需要什么getter,setter方法);而对于方法而言,它是隶属于包(包名一定是小写的),因此大写表示它可以被包外访问,小写只能被包内访问;

还能声明在函数里,这种情况只对函数局部可见;

2.如果要声明一个变量但不初始化,必须指定类型,如var obj AnClassType;(常量用const,类型是type,函数是func),如果同时初始化可以用短变量的方式如obj := new (AnClass),注意,这里和其他语言的new AnClass()不一样;

3.1.13版本的go,string转换为字节数组,默认就是UTF-8的;

4.struct也是值类型,因此struct的变量不能和nil比较,而必须是&AStructObj;

5.如果方法返回时出现异常,则其值为默认值,如int是0,struct类型是一个{};

6.对于特殊名字,如JSON, HTML,则一般这样命名HTMLEscape()或htmlEscape()而不会叫escapeHtml();

7.对于普通方法定义一般是func met() (ret int, err error) {… ret = 3;return},只要需要返回返回值或异常其中的一种则最后就必须要有return,但是和Java等语言不一样的是不需要写return xxx,因为它就是返回函数签名里的ret和err;

而对于扩展函数则是这么写func (o AType) extMet() {..},这个写法和接口的实现写法一致,可以理解为扩展方法其实就是实现匿名的接口;注意AType不能是基础类型或基础类型别名,如int,但是可以是基础类型原型的其他类型,如type AType = int;

8.go里没有继承的说法,比如type BType AType{…}是不允许的,但是可以用组合,type Btype {AType},然后里面可以添加其他属性,这样可以很好的解决Java里PO,DTO之类的问题,不过注意,虽然BType里可以调用AType的所有属性,但是BType实例

不能赋值给AType类型变量;

9.go里的常用工具类一般是type名字的复数,如strings,errors等等;

10.如果不是涉及到多态,那其实用扩展函数就可以,但是要实现接口变量承载多个类型实例,则需要接口来实现;

11.go处理配置文件的工具为:github.com/spf13/viper,即viper,可以处理JSON、TOML、YAML、HCL和Java properties

12.go里的new一个结构体是new (StructType)【当然,这里new其实是一个内置函数,比如len和print和println等都是内置函数】,而不是像Java里new类一样的new AClass(),然后强制转换也是不一样,go里是 AType(o),而Java里一般是(AType) o,这里是go比较好,Java里如果转换后还要做操作一般还得再套一层括号。

13.go里日志框架可以用logrus;

14.go里可以用短变量声明来声明新变量(必须有新变量,多重赋值里也是至少存在一个新变量才能用短变量声明),即类似js里全局变量的声明方式,即不需要指定var、const,也不需要指定类型如 ob := obj;,ob必须是新的变量;

15.go里可以用多重赋值,如a, b, c = 1, 2, 3;有点像短变量赋值,这些变量也是可以不预先声明,如果值是表达式比较复杂最好分开声明;多重赋值有点像元组;

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,297