简介fmt包实现了类似C语言printf和scanf的格式化I/O。格式化动作(’verb’)源自C语言但更简单。占位符:// 通用verbs %v 值的默认格式 %+v 类似%v,但输出结构体时会添加字段名 %#v Go语法表示值 %T Go语法表示类型 %% 百分号表示 // 浮点数 %t true或false // 整数 %b 表示二进制 %c 该值对应的unicod
转载
2023-08-18 18:22:07
19阅读
一、说明 网上提供的一个例子,做了修改与订正。 二、程序 #调入分词的库 library("rJava") library("Rwordseg") #调入绘制词云的库 library("RColorBrewer") library("wordcloud") #读入数据(特别注意,read.csv竟然
原创
2022-05-04 21:14:05
186阅读
interface理论接口是一个或多个方法签名的集合只要某个类型拥有该接口的所有方法签名,即算实现该接口,无需显示声明实现了哪个接口,这称为StructuralTyping接口只有方法声明,没有实现,没有数据字段接口可以匿名嵌入其他接口,或嵌入到结构中将对象赋值给接口时,会发生拷贝,而接口内部存储的是指向这个复制品的指针,即无法修改复制品的状态,也无法获取指针只有当接口存储的类型和对象都为nil时
原创
2018-04-14 17:11:44
1669阅读
点赞
reflection反射反射可大大提高程序的灵活性,使得interface{}有更大的发挥余地反射使用TypeOf和ValueOf函数从接口中获取目标对象信息反射会将匿名字段作为独立字段(匿名字段本质)想要利用反射修改对象状态,前提是interface.data是settable,即pointer-interface通过反射可以"动态"调用方法举例1、通过反射来获取属性信息,方
原创
2018-04-15 10:46:16
1010阅读
点赞
该演讲视频还未上线。如上线,我会把它更新到本文中的。
我应该如何编写出好代码?
我最近一直在思考很多事情,每当反思自己的工作成果时,眼前常会出现一行字幕:我该如何编写出好代码? 主观上,没人愿意去编写糟糕的代码,那么问题来了:你是怎么知道你编写出好的Go代码了呢?
如果好与坏之间存在连续性,那么我们怎么知道哪些是好的部分?它的特性、属性、标志、模式和惯用法又是什么呢?
Go语言惯用法(id
转载
2021-08-08 15:04:31
190阅读
go提供了10种类型用于表示整数,由于每种整数类型的取值福范围不同,所以应该根据场景所需的范围来决定使用何种整数类型。
还有2个是int和uint,这2个类型是根据计算机架构自动选择合适的位长。在32位机器上就是32位值,在64位机器上就是64位值。
可以使用Printf函数的&T来查看变量的类型
abc := 43223fmt.Printf("type %T for %v\n",abc
原创
精选
2022-09-20 14:10:21
422阅读
go的指针采用了c语言指针的语法,我们需要特别关注&和*,&表示地址操作符,可以得到指定变量的内存地址。
abc := 10fmt.Println(&abc)打印出来的是abc的地址,我们可以通过在变量前面加*对其进行解引用
fmt.Println(*abc)打印出来是10
指针类型可以跟其他普通类型一样,出现在所有需要用到类型的地方,如变量声明、函数形参、返回值类型、
原创
精选
2022-09-23 08:32:04
299阅读
控制并发有两种经典的方式,一种是WaitGroup,另外一种就是Context
原创
2017-07-25 14:47:05
1348阅读
摘要切片切片的构造切片的类型切片的拷贝切片的遍历切片的追加切片的删除切片切片(slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的封装。它非常灵活,支持自动扩容。与数组的区别:1、定义写法类似切片:var name []string数组:var name [5]string 数组必须指定长度数字2、相互转换切片可以通过数组转换而来,转换成切片之后,就可以扩容了package mainimport "fmt"func main() { var a = [5]i
原创
2021-08-24 09:19:49
259阅读
介绍我们知道反射是可以在程序的运行期间获取到变量或者结构体的一些元信息,能够知道类型,变量的值甚至修改值,执行方法等java中的反射应用非常广泛,基本上所有框架都用到了动态代理,而动态代理就是基于反射实现的。在go中也专门提供了一个标准库reflect,下面我们就基于这个库来简单使用下。我们准备一个结构体Person,包含有属性方法。1 创建该结构体的一个对象,通过反射获取到该对象的 结构体名称、
转载
2023-08-18 18:21:46
65阅读
函数就是一块执行特定任务的代码,在输入源的基础上通过一些算法生成预期的输出。 一、函数的声明 Go 语言中的函数声明语法如下: func 函数名(参数名 类型,参数名 类型)(返回值1类型,返回值2类型){ 函数体内容 return 返回值1,返回值2 } 注意:函数中的参数列表和返回值不是必须的 ...
转载
2021-10-01 10:24:00
133阅读
2评论
接口就是一系列方法的集合(规范行为) 在面向对象的领域里,接口一般这样定义:接口定义一个对象的行为,规范子类对象的行为。 在 Go 语言中的接口是非侵入式接口(接口没了,不影响代码),侵入式接口(接口没了,子类报错) Go 也是鸭子类型,比如我现在有个鸭子类,内有 speak 方法和 run 方法, ...
转载
2021-10-10 10:24:00
301阅读
2评论
在go语言中,nil是一个零值,如果我们在声明整数的时候没有为变量赋值,那么该整数的值默认是0,如果是一个指针没有明确的指向,它的值就是nil,除了指针,nil还标识切片、映射和接口的零值。
如果对一个指针进行解引用程序会崩溃
var abc *intfmt.Println(*abc)为了避免程序崩溃,需要通过对nil判断进行避免
if(abc != nil){ fmt.Println(
原创
精选
2022-09-23 14:27:28
857阅读