golang学习-基本数据类型

golang学习-基本数据类型 Go语言类型 数字类型 整数型 int unit 浮点型 字符串类型 go语言字符串字面量 go语言字符串连接 go语言字符串转义字符 go语言字符串切片操作 go语言字符串常用操作 布尔类型 用在逻辑判断中 用在循环中 用在逻辑表达式中 Go语言类型 在Go编程语言中,数据类型用于声明函数和变量。 数据类型的出现是为了数据分成所 内存大小 不同的数据,编程的时候需要用大数据的时候才需要申请大内存,这样就可以充分利用内存。 Go语言按照类别分别由以下集中数据类型: 数字类型

  • 0
  • 0
  • 阅读 ( 252 )

golang 基本数据类型

文章目录 整型 默认值:0 浮点型 默认值:0 布尔型 byte和rune 默认值:byte和rune都是0 字符串 字符串操作 方法 字符串的修改 默认值:`""` 注意 类型转换 字符串类型转换 Itoa和Atoi Parse类函数 Format类函数 整型 类型 描述 uint8 无符号 8位整型 (0 到 255) uint16 无符号 16位整型 (0 到 65535) uint32 无符号 32位整型 (0 到 4294967295) uint64 无符号 64位整型 (0 到

  • 0
  • 0
  • 阅读 ( 231 )

Go语言学习13-内建函数

内建函数 所谓内建函数,就是Go语言内部预定义的函数。调用它们的方式与调用普通函数并无差异,并且在使用它们之前也不需要导入任何代码包。这里并不能把内建函数当做值来使用。因为它们并不像普通函数那样有隶属的Go语言数据类型。 1. close函数 内建函数 close 只接受通道类型的值(简称通道)作为参数。例如: ch := make ( chan int , 1 ) close ( ch ) 调用这个 close 函数之后,会使作为参数的通道无法再接受任何元素值。若试图关闭一个仅能接受元素值的通道,则会造

  • 0
  • 0
  • 阅读 ( 212 )

Golang 之 基本数据类型

go语言基本数据类型 基本数据类型 整型:按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64 特殊整型:uinit、int、uintptr 注: uint8就是我们熟知的byte型,int16对应C语言中的short型,int64对应C语言中的long型。 uint8 无符号 8位整型 (0 到 255) uint16 无符号 16位整型 (0 到 65535) uint32 无符号 32位整型 (0 到 4294967295)

  • 0
  • 0
  • 阅读 ( 216 )

golang unsafe.Pointer和uintptr

uintptr 一个足够大的 无符号整型 , 用来表示任意地址。 可以进行数值计算。 unsafe.Pointer 一个可以指向任意类型的 指针 。 不可以进行数值计算。 有四种区别于其他类型的特殊操作: 任意类型的指针值均可转换为 Pointer。 Pointer 均可转换为任意类型的指针值。 uintptr 均可转换为 Pointer。 Pointer 均可转换为 uintptr。 以下示范了unsafe.Pointer类型合法的操作,不符合以下规范的操作现在或者将来都很可能是非法的操作。 1. 把一

  • 0
  • 0
  • 阅读 ( 225 )

「Goravel 上新」验证表单的三种新姿势,估计你只用过一种

验证用户输入的数据是我们开发中最常见的需求,Goravel 提供三种验证姿势,个个简单好用! 第一种:简单直接式 根据表单内容直接校验: func (r *PostController) Store(ctx http.Context) { validator, err := ctx.Request().Validate(map[string]string{ "title": "required|max_len:255", "body": "requi

  • 0
  • 0
  • 阅读 ( 273 )

结合商业项目深入理解Go知识点

这篇文章比较硬核,爆肝5千字,把之前整理的知识点都串起来了。建议先收藏,慢慢看。 前言 上一篇文章 #【Go WEB进阶实战】开源的电商前后台API系统 很受大家欢迎,有好多小伙伴私信我问题:“gtoken真不错,能不能再多讲讲?”、“接口怎么设计Cache好?”、“代码规范讲一下吧”、“这个系统有没有前端页面?”,等等.... 那我就再写一篇作为补充喽,小伙伴们还有什么问题欢迎在评论区留言。 之前整理过一篇 可能是全网最用心的「Go学习建议和资料汇总」 ,也深受大家好评,大家可以先收藏慢慢学。 这篇文章

  • 0
  • 1
  • 阅读 ( 372 )

Go 快速入门指南 - 互斥锁和定时器

互斥锁 对于任一共享资源,同一时间保证只有一个操作者,这种方法称为  互斥机制 。 关键字  Mutex  表示互斥锁类型,它的  Lock  方法用于获取锁, Unlock  方法用于释放锁。在  Lock  和  Unlock  之间的代码,可以读取和修改共享资源,这部分区域称为  临界区 。 错误的并发操作 先来看一个错误的示例。 在 Map 小节中讲到,  Map  不是并发安全的,  也就是说,如果在多个线程中,同时对一个 Map 进行读写,会报错。现在来验证一下, 通过启动  100 个 go

  • 0
  • 0
  • 阅读 ( 343 )

Go 快速入门指南 - 判断是否实现接口

判断是否实现接口 Go 里面没有  implements  关键字来判断一个结构体 (对象) 是否实现了某个接口,  要实现类似的功能, 需要用到  类型断言 。 类型断言 // 判断 v 是否实现了接口 i // 返回值 ok 为 true 表示已实现,ok 为 false 表示未实现 if _, ok := v.(i); ok { // do something... }  例子 判断是否实现接口 package main import "fmt" type geometry inte

  • 0
  • 0
  • 阅读 ( 327 )

Go 快速入门指南 - 缓冲通道和非缓冲通道

概述 建议先阅读 goroutine 小节。 Go 箴言: 不要通过共享内存来通信,而要通过通信来共享内存。 goroutine  是 Go 程序并发执行的实体, channel (通道)  则是它们之间的连接,用于多个  goroutine  之间互相通信。通道可以让一个  goroutine  发送特定类型值到另一个  goroutine ,每一个通道可以发送数据类型称为通道的  元素类型 。 阻塞通道与非阻塞通道 通过关键字  chan  +  数据类型  来表明通道数据类型,调用  make()

  • 0
  • 0
  • 阅读 ( 303 )

Go 快速入门指南 - 嵌套结构体

概述 Go 支持将多个结构体通过嵌套的方式,组成一个大的结构体,降低了单个结构体复杂度,同时提高了结构体之间组合的灵活性。 例子 为了省略篇幅,本小节只使用  字面量  方式初始化, new()  的初始化方式请参照 结构体 小节。 每个结构体单独初始化,最后组装 package main import (     "fmt" ) type person struct {     name string     age  int16     hobby     profession    

  • 0
  • 0
  • 阅读 ( 257 )

Go 快速入门指南 - 接口和方法

接口 Go 接口是隐式实现。  对于一个数据类型,无需声明它实现了哪些接口,只需要实现接口必需的方法即可。当然了,存在一个小问题就是: 我们可能无意间实现了某个接口:) ,所以  命名  是多么重要的一件事情。 语法规则 type 接口名称 interface {     方法1名称(参数列表 ...) 返回值列表...     方法2名称(参数列表 ...) 返回值列表...     方法3名称(参数列表 ...) 返回值列表...     ...     ... } 例子 求矩形和圆的周长, 面积 p

  • 0
  • 0
  • 阅读 ( 354 )

Go 快速入门指南 - defer 函数

概述 一个  defer  语句就是一个普通的函数或方法调用。   defer  语句保证了不论是在正常情况下 (return 返回), 还是非正常情况下 (发生错误, 程序终止),函数或方法都能够执行。 主要特性 • 一个函数可定义多个  defer  语句 •  defer  表达式中的变量值在  defer  表达式定义时已经确定 •  defer  表达式可以修改函数中的命名返回值 主要作用 • 简化异常处理 ( 使用  defer  +  recover ),避免异常与控制流混合在一起 ( tr

  • 0
  • 0
  • 阅读 ( 309 )

巧如范金,精比琢玉,一分钟高效打造精美详实的Go语言技术简历(Golang1.18)

研发少闲月,九月人倍忙。又到了一年一度的“金九银十”秋招季,又到了写简历的时节,如果你还在用传统的Word文档寻找模板,然后默默耕耘,显然就有些落后于时代了,本次我们尝试使用云平台flowcv高效打造一份巧如范金、精比琢玉的高品质Golang技术简历。 首先来到云平台:flowcv.com 点击 try free 然后选择 Resume 点击创建新简历: 一份合格的技术简历大抵包含六大部分:个人信息(Information)、个人简介(Profile)、工作经历(Professional Experien

  • 0
  • 0
  • 阅读 ( 231 )

区块链,中心去,何曾着眼看君王?用Go语言实现区块链技术,通过Golang秒懂区块链

区块链技术并不是什么高级概念,它并不比量子力学、泡利不相容原则、哥德巴赫猜想更难以理解,但却也不是什么类似“时间就是金钱”这种妇孺皆知的浅显道理。区块链其实是一套统筹组织记录的方法论,或者说的更准确一些,一种“去中心化”的组织架构系统。 去中心化 众所周知,任何一个公司、组织、或者是机构,都遵循同一套组织架构原则,那就是“下级服从上级、少数服从多数”原则。而对于区块链技术来说,只遵循这个原则的后半句,那就是“少数服从多数”,不存在“下级服从上级”。 进而言之,在区块链中,根本就没有什么所谓“上级”的概念。

  • 0
  • 0
  • 阅读 ( 288 )

Go语言性能剖析利器--pprof实战

作者:耿宗杰 前言 关于pprof的文章在网上已是汗牛充栋,却是千篇一律的命令介绍,鲜有真正实操的,本文将参考Go社区资料,结合自己的经验,实战Go程序的性能分析与优化过程。 优化思路 首先说一下性能优化的一般思路。系统性能的分析优化,一定是从大到小的步骤来进行的,即从业务架构的优化,到系统架构的优化,再到系统模块间的优化,最后到代码编写层面的优化。业务架构的优化是最具性价比的,技术难度相对较小,却可以带来大幅的性能提升。比如通过和同事或外部门沟通,减少了一些接口调用或者去掉了不必要的复杂的业务逻辑,可以

  • 0
  • 0
  • 阅读 ( 280 )

在线客服系统源码开发实战总结:Golang实现对接微信公众号网页授权接口功能

获取微信昵称、头像、OpenID 微信公众号服务号的网页授权功能开发,主要是通过js跳转到一个微信提供的url 然后微信会弹出获取昵称头像的按钮 允许获取后,会回跳到我们的网址上,并且带着一个code参数 我们拿到code参数,调用接口获取到获取到昵称头像、以及openid。这样就拿到了微信客户的主要信息 绑定自有系统 我们数据库会建立一张表,存储一个对应关系 微信openid对应的我们用户的唯一标识,拿到OpenID查询出唯一标识,就能获取到我们自己的用户信息 这样就能直接登录到系统了 实际案例 比如我

  • 0
  • 0
  • 阅读 ( 222 )

有趣的 Go HttpClient 超时机制

hello,大家好呀,我是既写 Java 又写 Go 的小楼,在写 Go 的过程中经常对比这两种语言的特性,踩了不少坑,也发现了不少有意思的地方,今天就来聊聊 Go 自带的 HttpClient 的超时机制。 Java HttpClient 超时底层原理 在介绍 Go 的 HttpClient 超时机制之前,我们先看看 Java 是如何实现超时的。 写一个 Java 原生的 HttpClient,设置连接超时、读取超时时间分别对应到底层的方法分别是: 再追溯到 JVM 源码,发现是对系统调用的封装,其实不

  • 0
  • 0
  • 阅读 ( 253 )

Go map 竟然也会发生内存泄漏?

Go 程序运行时,有些场景下会导致进程进入某个“高点”,然后就再也下不来了。 比如,多年前曹大写过的一篇 文章 讲过,在做活动时线上涌入的大流量把 goroutine 数抬升了不少,流量恢复之后 goroutine 数也没降下来,导致 GC 的压力升高,总体的 CPU 消耗也较平时上升了 2 个点左右。 有一个 issue 讨论为什么 allgs(runtime 中存储所有 goroutine 的一个全局 slice) 不收缩,一个好处是:goroutine 复用,让 goroutine 的创建更加得便利

  • 0
  • 0
  • 阅读 ( 250 )

《Go 语言并发之道》读书笔记(一)

已经把《Go 语言并发之道》通读了一遍,非常不错的一本书,对于理解掌握Go语言的并发知识有很大的帮助,接下来我会把书中有用的知识通过代码示例出来,把一些比较好的知识点记录下来。 首先我们来看一段代码 var data int go func() { data++ }() if data == 0 { fmt.Println(" the value is 0.") } else { fmt.Printf(" the value is %v.\n", data) } 这段代码我

  • 0
  • 0
  • 阅读 ( 262 )