接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。接口本章学习目标了解为什么需要接口以及接口的特点掌握接口的声明和使用掌握接口值的概念掌握空接口的特点及其使用场景在Go语言中接口(interface)是一种类型,一种抽象的类型。相较于之前章节中讲到的那些具体类型(字符串、切片、结构体等)更注重“我是谁”,接口类型更注重“我能做什么”的问题。接口类型
转载
2024-01-21 01:22:21
94阅读
python支持序列类型的数据进行切片,这种方式非常的便捷。 go语言中的数据容器只有数组,但是由于go有点底层,没有办法实现数组的切片,于是添加了一种新的数据类型,叫做切片slice,用于解决数组切片的问题。 简述go语言的切片,实际
转载
2023-08-13 11:05:34
119阅读
Go语言函数、数组、切片 Go语言中函数,数组这些都是派生类型,也可以说是复杂类型,能够处理更加复杂的数据。一、函数函数是基本的代码块,用于执行一个任务。Go 语言最少有个 main() 函数。函数声明告诉了编译器函数的名称,返回类型,和参数。Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度,如果传
转载
2023-08-21 10:12:22
149阅读
在Go语言中,切片(Slice)是一种数据结构,它是对数组一个连续片段的引用,这个数组称为切片的底层数组。切片和数组的关系是非常紧密的。在Go语言中,数组是一个固定长度的序列,而切片则是一个可变长度的序列。切片是建立在数组之上的,它提供了动态数组的功能,可以根据需要动态地增加或缩小切片的长度。基本使用切片(Slice)是Go语言中非常重要的数据结构之一,它常用于对数组进行操作,提供了方便的动态扩容
转载
2023-08-21 11:10:56
52阅读
切片诞生的背景数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性。 例如:func arraySum(x [3]int) int{
sum := 0
for _, v := range x{
sum = sum + v
}
return sum
}
//这个求和函数只能接受[3]int类型,其他的都不支持。 
转载
2023-07-06 17:04:26
229阅读
最新Go语言急速入门视频教程(七米出品)——接口_哔哩哔哩_bilibili接口是一种类型,一种抽象的类型。接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。接口本章学习目标了解为什么需要接口以及接口的特点掌握接口的声明和使用掌握接口值的概念掌握空接口的特点及其使用场景在Go语言中接口(interface)是一种类型,一种抽象的类型。相较于之前章节
转载
2024-01-13 23:20:32
102阅读
在一些介绍 sync 包相关的文章中,我们应该也发现了,其中有不少地方使用了原子操作。 比如 sync.WaitGroup、sync.Map 再到 sync.Pool,这些结构体的实现中都有原子操作的身影。 原子操作在并发编程中是一种非常重要的操作,它可以保证并发安全,而且效率也很高。 本文将会深入探讨一下 go 中原子操作的原理、使用场景、用法等内容。什么是原子操作?原子操作是变量级别的互斥锁。
转载
2024-01-10 12:52:30
99阅读
1. 什么是原子操作 我们已经知道,原子操作即是进行过程中不能被中断的操作。也就是说,针对某个值的原子操作在被进行的过程当中,CPU绝不会再去进行其它的针对该值的操作。无论这些其它的操作是否为原子操作都会是这样。为了实现这样的严谨性,原子操作仅会由一个独立的CPU指令代表和完成。只有这样才能够在并发环境下保证原子操作的绝对安全。Go语言提供的原子操作都是非侵入式的。它们由标准库代码包
转载
2023-11-21 00:17:28
103阅读
Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。map内的键值对是无序的map定义Go语言中 map的定义语法如下: map[KeyType]ValueType KeyType:表示键的类型。ValueType:表示键对应的值的类型。map类型的变量默认初始值
转载
2024-02-02 07:24:03
63阅读
目录 方法,接口及并发方法接口并发信道结束语 前言: go语言的第四篇文章,主要讲述go语言中的方法,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示例,可直接运行。方法,接口及并发方法方法就是一类带特殊的接收者(struct)参数的函数通过 结构体.方法 调用 示例:type city struct {
name, address string
}
func (c
转载
2023-11-20 21:22:40
111阅读
前言cgo 提供了 golang 和 C 语言相互调用的机制。几乎所有的编程语言都有C语言的影子,当然golang也不例外。可以看到golang的创始者们与C语言有着密切的联系。下面我们将通过快速入门小例子来掌握cgo的基本用法。最简cgo程序真实的cgo程序一般都比较复杂。不过我们可以通过一个小例子,了解一个最简的cgo程序该是什么样的。构造一个最简cgo程序,首先要忽视一些复杂的cgo特性,同
转载
2023-07-11 23:23:49
254阅读
今天来聊一下 Go 如何使用 set,本文将会涉及 set 和 bitset 两种数据结构。Go 的数据结构Go 内置的数据结构并不多。工作中,我们最常用的两种数据结构分别是 slice 和 map,即切片和映射。 其实,Go 中也有数组,切片的底层就是数组,只不过因为切片的存在,我们平时很少使用它。除了 Go 内置的数据结构,还有一些数据结构是由 Go 的官方 container 包提供,如 h
转载
2023-07-11 23:22:39
155阅读
一、函数定义函数是结构化编程中最小的模块单元,日常开发过程中,将复杂的算法过程分解为若干个小任务(代码块),使程序的结构性更清晰,程序可读性提升,易于后期维护和让别人读懂你的代码。编写多个函数的主要目的是将一个需要很多行代码的复杂问题分解为一系列简单的任务(那就是函数)来解决。在实际编程中,我们把重复性的任务抽象成一个函数。和所有的编程语言一样,Go语言支持各种风格的函数。在Go语言中,当函数执行
转载
2023-08-30 16:32:15
189阅读
Go语言反射,reflectionGo语言中的反射是由 reflect 包提供支持的,它定义了两个重要的类型 Type 和 Value 任意接口值在反射中都可以理解为由 reflect.Type 和 reflect.Value 两部分组成,并且 reflect 包提供了 reflect.TypeOf 和 reflect.ValueOf 两个函数来获取任意对象的 Value 和 Type。反射的类型
转载
2023-08-12 22:30:37
101阅读
在编写命令行程序(工具、server)时,需要对命令行参数进行解析,各种编程语言一般都会提供解析命令行参数的方法或库,以便程序员使用。
Go语言中的flag包中,提供了命令行参数解析的功能。概念:命令行参数(或参数):是指运行程序时提供的参数;已定义命令行参数:是指程序中通过 flag.Type 这种形式定义了的参数;非 flag(non-flag)命令行参数(或保留的命令行参数):可以简单理解
转载
2023-07-12 14:19:07
184阅读
一、orm原生sql之Exec方法Exec方法只能执行 “插入、删除、更新数据” 的sql操作,不能执行查询操作,具体看下面示例: 1.1、原生sql插入数据操作ret, err := o.Raw(`INSERT into article(title, author, read_count) VALUE(?, ?, ?)`, "beego详解", "优选出品", 99999).Exec(
转载
2023-07-12 14:18:56
85阅读
前言:这几天认真的学了一下GO,发现之前的感觉不太对。一开始从进阶入门,上来就是并发、管道、goroutine什么的,确实很容易让人畏惧。经过这几天的学习,从基础入门,我的感觉就是其实Go没有那么难,基本的变量声明赋值语法有点类似于我们学spark时候学的Scala,然后它的指针和C语言也基本是一样的,它的关键字、内置函数等等也和其他语言大致相同。其实有了C语言的基础上手go还是很快的,至于go的
转载
2023-08-30 16:31:55
113阅读
可以在一个 Go语言源文件包声明语句之后,其它非导入声明语句之前,包含零到多个导入包声明语句。每个导入声明可以单独指定一个导入路径,也可以通过圆括号同时导入多个导入路径。要引用其他包的标识符,可以使用 import 关键字,导入的包名使用双引号包围,包名是从 GOPATH 开始计算的路径,使用/进行路径分隔。默认导入的写法 导入有两种基本格式,即单行导入和多行导入,两种导入方法的导入代码效果是一致
转载
2023-07-11 23:24:12
90阅读
引入defer是Go语言中的一个关键字(延迟调用),一般用于释放资源和连接、关闭文件、释放锁等。和defer类似的有java的finally和C++的析构函数,这些语句一般是一定会执行的(某些特殊情况后文会提到),不过析构函数析构的是对象,而defer后面一般跟函数或方法。1、 多个defer语句,按先进后出的方式执行package main
import "fmt"
func main()
转载
2023-07-11 23:23:37
110阅读
Go语言变量操作一览
原创
2018-10-27 22:34:50
438阅读