- 博客(58)
- 收藏
- 关注
原创 Go语言并发编程
Go语言通过goroutine和channel提供了强大的并发编程支持。goroutine是一种轻量级的线程,可以在Go语言运行时环境中创建数千个goroutine,而且创建和销毁goroutine的代价非常小;channel是一种通信机制,用于在goroutine之间传递数据。在本篇技术博客中,我们将介绍如何使用goroutine和channel实现并发编程,包括goroutine的创建和销毁、channel的创建和使用、goroutine的同步和互斥、以及相关的示例代码。
2023-07-17 09:45:00 248
原创 Go语言包函数可访问性
在Go语言中,包(package)是一种组织代码的方式,可以将一组相关的函数、变量等封装在一个独立的单元中,便于代码的复用和维护。在包中,函数(function)是一种常见的代码块,它可以用来实现特定的功能。在本篇技术博客中,我们将介绍Go语言中包函数的可访问性,包括函数的导出和非导出、函数参数和返回值的可访问性等,以及相关的示例代码。
2023-07-17 07:00:00 393
原创 Go语言包结构体可访问性
在Go语言中,包(package)是一种组织代码的方式,可以将一组相关的函数、变量等封装在一个独立的单元中,便于代码的复用和维护。在包中,结构体(struct)是一种常见的数据类型,它可以用来存储一组相关的数据,并提供相应的操作方法。在本篇技术博客中,我们将介绍Go语言中包结构体的可访问性,包括结构体字段的导出和非导出、结构体方法的导出和非导出等,以及相关的示例代码。
2023-07-16 21:13:04 753
原创 Go语言自定义包
首先,我们需要创建一个自定义包,并将相关的函数、变量等封装在其中。package mypackage // 导出函数 func ExportedFunc() {// ... } // 非导出函数 func nonExportedFunc() {// ... }然后,我们需要使用go build命令编译自定义包,生成对应的二进制文件。最后,我们可以在其他Go程序中使用自定义包。通常需要使用import语句导入自定义包,并使用包名来调用其中的函数、变量等。在这个示例代码中,我们导入了mypackage。
2023-07-16 21:11:35 1151
原创 Go 语言内置包
本篇技术博客深入探讨了Go 语言内置包的特性,包括如何使用内置包、内置包的常用功能等方面。通过了解和应用这些特性,我们可以更好地处理字符串、操作文件和目录、进行网络编程等。在实际开发中,充分利用 Go 语言内置包的特性可以大大提高程序的效率和可维护性。同时,我们也可以通过自己编写内置包来扩展 Go 语言的功能和应用范围。
2023-07-07 07:45:00 221
原创 Go 语言包引用
本篇技术博客深入探讨了 Go 语言包引用的特性,包括如何引用标准库、第三方库和本地库等方面。通过了解和应用这些特性,我们可以更好地共享代码和功能,并编写出更加可靠和易于维护的程序。在实际开发中,充分利用 Go 语言包引用的特性可以大大提高程序的可重用性和可维护性。
2023-07-07 06:30:00 383
原创 Go 语言包特性
本篇技术博客深入探讨了 Go 语言包的特性,包括包的组织结构、导入方式、可见性和初始化等方面。通过了解和应用这些特性,我们可以更好地组织和管理自己的代码,并编写出更加可靠和易于维护的程序。同时,我们也介绍了如何编写和运行测试用例,以确保我们的代码质量。在实际开发中,充分利用 Go 语言包的特性可以大大提高程序的可重用性和可维护性。
2023-07-06 22:58:46 370
原创 Go 语言包
本篇技术博客介绍了 Go 语言中的包概念,包括包的作用、命名规则、导入方式、函数和变量的可见性以及如何创建和使用包。包是 Go 语言中重要的组织代码的机制,能够提高代码的可重用性和可维护性。通过深入了解包的概念和使用方法,我们可以更加有效地组织和管理自己的代码。
2023-07-06 22:58:06 512
原创 Go 语言 error 接口
在Go语言中,error接口是一种特殊的接口类型,它用于表示错误信息。error接口只包含一个Error()方法,该方法返回一个字符串类型的错误信息。如果函数或方法返回一个error类型的值,那么它表示可能发生的错误情况。实现了Error()方法的类型都可以被视为error类型的值,因此在Go语言中,我们可以使用任何类型的值来表示错误信息。通常情况下,我们使用字符串类型的值来表示错误信息。在这个例子中,我们定义了一个divide函数,它接受两个整数类型的参数x、y,并返回它们的商和一个error类型的值。
2023-07-05 08:15:00 262
原创 Go 语言空接口比较
在Go语言中,空接口是一种特殊的接口类型,它可以表示任何类型的值,因为它不包含任何方法。空接口类型的变量可以接收任何类型的值,因此它具有很大的灵活性和通用性。本篇博客将介绍Go语言中的空接口比较,包括如何比较空接口类型的值、空接口类型的判空等问题。
2023-07-05 07:15:00 228
原创 Go 语言空接口
空接口不仅可以表示任何类型的值,还可以通过类型断言将其转换为其他类型的值。1 , 2 }由于空接口可以表示任何类型的值,因此它非常灵活和通用。我们可以使用空接口来实现一些通用的算法和数据结构,也可以使用空接口来处理一些动态类型的数据,例如JSON解析和反序列化等操作。
2023-07-04 22:55:53 634
原创 Go 语言接口嵌套
在Go语言中,接口嵌套是指一个接口可以包含另一个或多个接口类型。通过接口嵌套,我们可以将多个接口组合成一个更复杂的接口类型,从而提高代码的可重用性和可扩展性。ReaderWriter }在这个例子中,我们定义了三个接口类型:Reader、Writer和ReadWriter。Reader和Writer分别定义了Read和Write方法,而ReadWriter接口类型则嵌套了Reader和Writer,因此它也包含了Read和Write方法。
2023-07-04 22:55:19 732
原创 Go接口类型转换
在 Go语言中,接口类型是一种特殊的类型,它定义了一组方法,但是并不提供具体实现。接口类型可以被任何实现了这组方法的类型实现,这使得我们可以写出非常灵活的代码,以适应各种不同的数据类型。上面的代码定义了一个名为 Animal的接口类型,它包含一个名为 Speak的方法。任何实现了 Speak方法的类型都可以实现 Animal接口类型。上面的代码定义了两个类型:Dog和Cat,它们都实现了 Animal接口类型中的 Speak方法。
2023-07-03 22:51:55 958
原创 Go语言类型断言
本文详细介绍了 Go 语言中类型断言的使用方法,包括断言的语法、类型断言的两种方式、类型断言的注意事项等方面。类型断言是 Go 语言中非常重要的特性,可以帮助我们将接口类型转换为其他类型,并判断一个接口值是否实现了某个接口。掌握类型断言的使用方法可以提高代码的灵活性和可维护性。
2023-07-03 22:48:13 565
原创 Go 断言
本文详细介绍了 Go 语言中断言的使用方法,包括类型断言和类型选择。断言是 Go 语言中非常重要的特性,可以帮助我们将接口类型转换为其他类型,并根据接口值的类型进行不同的处理。掌握断言的使用方法可以提高代码的灵活性和可维护性。
2023-07-02 20:57:07 606
原创 Go 接口声明
在 Go 语言中,接口是一组方法的集合,一般用于描述某个对象的行为。type 接口名 interface {方法名 1(参数列表) 返回值列表方法名 2(参数列表) 返回值列表 ... }其中,接口名表示接口的名称,方法名表示方法的名称,参数列表表示方法的参数列表,返回值列表表示方法的返回值列表。例如,我们可以定义一个Animal在上面的代码中,我们定义了一个Animal接口,包含了Eat和Sleep两个方法。
2023-07-02 20:54:12 291
原创 Go语言解析Json
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于在不同的平台和语言之间传递数据。JSON 格式的数据由键值对组成,键和值之间使用冒号分隔,键值对之间使用逗号分隔,整个数据使用大括号包裹。本文详细介绍了 Go 语言中如何解析 JSON,包括 JSON 的定义、解析的方法、示例代码等方面。在实际开发中,我们经常需要处理 JSON 格式的数据,掌握 JSON 解析的方法是非常重要的。
2023-07-01 22:02:47 1954 1
原创 Go语言匿名结构体
首先,我们需要了解什么是结构体。在 Go 语言中,结构体是一种自定义的数据类型,可以由多个字段组成。这里我们定义了一个Person结构体,它由两个字段组成,分别是Name和Age。我们可以通过以下方式来创建一个Person当我们需要在一个结构体中嵌入另一个结构体时,通常使用结构体的字段来实现。这里我们定义了两个结构体,分别是Address和Person,并且在Person结构体中嵌入了Address结构体。这样我们就可以通过等方式来访问Person结构体中的Address字段了。但是,如果我们只需要使用。
2023-07-01 22:02:02 1140
原创 Go语言结构体
在 Go 语言中,结构体的定义使用type关键字和struct关键字。其中StructName表示结构体的名称,FieldName1FieldName2等表示结构体的字段名称,FieldType1FieldType2等表示结构体的字段类型。package main import "fmt" // 定义一个名为 Person 的结构体类型 type Person struct {
2023-06-30 11:30:00 166
原创 Go语言new与make区别
本文介绍了 Go 语言中new和make的区别、用法和注意事项,并提供了相应的示例代码。虽然new和make都用于创建新的变量。
2023-06-30 09:30:00 612
原创 Go 语言 nil 空值
本文介绍了 Go 语言中nil空值的概念、用法和注意事项,并提供了相应的示例代码。nil在 Go 语言中被用于表示指针、接口和函数类型的零值或空值,但需要注意它的使用限制和可能导致的运行时错误。在实际开发中,我们需要谨慎使用nil,并且要确保我们的代码能够正确地处理nil值。
2023-06-29 22:37:49 701
原创 Go 数组与切片的区别
在 Go 语言中,数组和切片都是用于存储一组相同类型的元素,但它们在内部结构、长度和使用方式上有很大的区别。数组是一组固定长度的元素的集合,长度在创建时指定,不能更改,使用时需要明确指定下标访问元素。切片是一个动态长度的序列,长度可以动态扩展或收缩,使用时可以动态生成、复制或添加元素。希望本文对您理解 Go 语言中数组和切片的区别有所帮助。
2023-06-29 22:37:00 1122
原创 Golang 列表list
本文介绍了 Golang 中 list 的创建、初始化、添加元素、删除元素和遍历操作。支持任意类型的元素:在传统的数组和切片中,元素必须是具体的类型,而 list 可以支持任意类型的元素。便于插入和删除元素:在传统的数组和切片中,插入和删除元素时需要移动其他元素,效率较低,而 list 可以通过双向链表的方式,高效地插入和删除元素。遍历方式灵活:在传统的数组和切片中,只能使用 for 循环来遍历元素,而 list 可以通过 e.Next() 函数实现更灵活的遍历方式。
2023-06-28 22:45:48 1830
原创 Golang syncMap 详解
本文介绍了 Golang 中 sync.Map 的创建、初始化、添加元素、删除元素和遍历操作。并发安全:在多个 Goroutine 中读写 Map 时,使用 sync.Map 可以避免数据竞争的问题。支持任意类型的 key 和 value:在传统的 Map 中,key 和 value 必须是具体的类型,而 sync.Map 可以支持任意类型的 key 和 value。自动扩容:在传统的 Map 中,当 Map 中元素的数量超过了容量时,需要手动扩容。而 sync.Map 会自动扩容,无需手动干预。
2023-06-28 22:42:44 798
原创 Golang map 详解
本文介绍了 Golang 中 Map 的创建、初始化、添加元素、删除元素和遍历操作。在使用 Map 时需要注意的一些事项包括:Map 中的 key 必须是可比较的类型,Map 中的元素是无序的,可以使用 make() 函数创建一个空的 Map,可以使用 m[key] = value 的方式来添加元素到 Map 中,可以使用 delete() 函数来删除 Map 中的元素,可以使用 for 循环来遍历 Map 中的元素。
2023-06-27 23:13:13 1462
原创 Golang syncMap 详解
本文介绍了 Golang 中 sync.Map 的创建、初始化、添加元素、删除元素和遍历操作。并发安全:在多个 Goroutine 中读写 Map 时,使用 sync.Map 可以避免数据竞争的问题。支持任意类型的 key 和 value:在传统的 Map 中,key 和 value 必须是具体的类型,而 sync.Map 可以支持任意类型的 key 和 value。自动扩容:在传统的 Map 中,当 Map 中元素的数量超过了容量时,需要手动扩容。而 sync.Map 会自动扩容,无需手动干预。
2023-06-27 23:11:42 1933
原创 Go 多维切片
本文介绍了 Golang 中多维切片的创建、初始化、添加元素、删除元素和遍历操作。在使用多维切片时需要注意的一些事项包括:多维切片的每个子切片可以有不同的长度,可以使用 append() 函数来添加元素,可以使用切片的切片操作来删除元素,可以使用 for 循环来遍历多维切片中的元素。多维切片在 Golang 中是一个非常有用的数据结构,它可以帮助我们轻松地模拟多维数组,并且具有动态增加或缩小大小的能力。在实际应用中,多维切片可以用来存储和处理各种类型的数据,例如图形、地图、矩阵等等。
2023-06-26 23:10:47 473
原创 Go 切片
本文对 Golang 切片进行了详细的介绍,包括创建、初始化、添加元素、删除元素、扩展和缩小大小、截取等操作,并提供相应的示例代码。切片是 Golang 中最常用的数据结构之一,掌握切片的操作可以让 Golang 开发更加高效和便捷。
2023-06-26 23:08:34 196
原创 Go 容器类
在Go语言中,container包提供了堆和列表类型,可以用于实现堆和链表数据结构。在Go语言中,集合类主要由内置的数组和切片类型、以及标准库中的map类型、sync包中的锁类型和container包中的堆和列表类型组成。Go语言中的数组和切片类型可以用于存储一组有序的元素,其中数组是固定长度的,而切片则是可变长度的。Go语言中的map类型可以用于存储键值对,其中键和值可以是任何类型。以上是关于Go语言集合类的简要介绍,更详细的内容可以参考Go语言官方文档和第三方库的使用说明。
2023-06-20 08:30:00 78
原创 Go 匿名函数 & defer 语句
在 Go 语言中,可以使用关键字func定义一个匿名函数。匿名函数的定义格式与普通函数类似,只是没有函数名。func() {") }()在上面的示例中,定义了一个匿名函数,该函数没有参数和返回值,直接输出一个字符串。匿名函数的定义后面加上一对括号,表示立即执行该函数。本篇技术博客介绍了 Go 语言中的匿名函数、函数递归和 defer 语句等高级特性。
2023-06-20 06:00:00 179
原创 Go 语言函数
在 Go 语言中,函数的定义使用关键字funcfunc 函数名(参数列表) 返回值列表 {函数体 }其中,参数列表和返回值列表都可以为空。如果函数有多个返回值,则需要使用括号将返回值列表包含起来。在上面的示例中,函数名为add,参数列表为a, b int,表示函数接受两个整数类型的参数,返回值列表为int,表示函数返回一个整数类型的值。在 Go 语言中,可以使用关键字func定义一个匿名函数。匿名函数的定义格式与普通函数类似,只是没有函数名。
2023-06-19 08:45:00 83
原创 Go 语言异常处理
Go 语言使用panic和recover语句来实现异常处理机制。使用panic语句可以抛出一个异常,而使用recover语句可以捕获该异常并恢复程序的正常执行流程。在编写程序时,应尽量避免使用 panic 来处理错误,而应该使用错误处理机制来处理程序中的错误。这样可以使程序更加健壮、可读、可维护。
2023-06-19 08:00:00 386
原创 Go 流程控制之 Switch 语句
Switch 语句是一种强大的流程控制语句,它可以根据不同的条件执行不同的代码块。在 Go 语言中,Switch 语句的基本语法包括一个可选的表达式和多个case子句,以及一个可选的default子句。可以使用 Switch 语句比较多个表达式的值,并使用语句在一个case子句中执行完代码块后继续执行下一个case子句中的代码块。在实际编程中,Switch 语句可以用于处理多种情况,例如根据用户输入的命令执行不同的操作,或者根据一个变量的值执行不同的计算。
2023-06-18 21:07:19 424
原创 Go 流程控制之 goto 语句
goto语句是一种流程控制语句,它可以无条件地跳转到程序中的另一个标签处,并继续执行标签下方的代码块。虽然goto语句可以使程序的控制流变得混乱和难以理解,但在某些情况下,使用goto语句可以使代码更加简洁、易读,并且可以避免重复的代码。在实际编程中,应尽量避免使用goto语句,特殊情况下可以使用。
2023-06-18 21:06:14 251
原创 Go 流程控制 for、for range 循环
在本篇博客中,我们将介绍Go语言中的for循环和for range循环的用法和示例。其中,initialization是循环变量的初始化语句,condition是循环的退出条件,post是每次循环后执行的语句。在上面的代码中,循环变量i的初始值为1,每次循环增加1,直到i的值大于10时退出循环。在上面的代码中,使用for range循环遍历了一个长度为3的数组,并将每个元素的下标和值输出到控制台中。在上面的代码中,使用for range循环遍历了一个长度为3的切片,并将每个元素的下标和值输出到控制台中。
2023-06-17 22:21:54 576
原创 Go 流程控制 if 条件判断
在本篇博客中,我们介绍了Go语言中的if、else if和else语句的用法和示例。需要注意的是,在实际编写程序时,应根据需要选择合适的条件判断语句,以便实现正确的流程控制。在Go语言中,if else语句可以进行嵌套,即在if或else语句中再次嵌套一个if else语句。在本篇博客中,我们将介绍Go语言中的if、else if和else语句的用法和示例。由于num的值为-1,因此if语句中的代码块不会被执行。其中,condition是一个布尔表达式,如果它的值为true,则执行if语句中的代码块。
2023-06-17 22:20:54 852
原创 Go语言格式化占位符
使用格式化占位符,可以将变量的值格式化为指定的格式,并输出到控制台或文件中。在本篇博客中,我们介绍了Go语言中常用的格式化占位符,以及它们的用法和示例。需要注意的是,在实际编写程序时,应根据需要选择合适的占位符,以便输出正确的格式。使用格式化占位符,可以将变量的值格式化为指定的格式,并输出到控制台或文件中。在本篇博客中,我们将介绍Go语言中常用的格式化占位符,以及它们的用法和示例。需要注意的是,布尔值的格式化占位符为%t,而不是%b或%d。在上面的代码中,%v和%+v分别表示输出结构体的值和字段名和值。
2023-06-16 23:02:45 522
原创 Go 运算符
在Go语言中,不同的运算符具有不同的优先级,优先级高的运算符会先进行计算。如果优先级相同,则按照从左到右的顺序计算。需要注意的是,运算符的优先级不同,对表达式的计算会产生不同的影响,因此在编写程序时需要注意运算符的优先级,避免出现意想不到的错误。Go语言中的运算符是用于对数据进行操作的符号或关键字,包括算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符等。需要注意的是,赋值运算符的优先级较低,为所有运算符中最低的,因此在表达式中使用赋值运算符时需要注意优先级的问题,可以使用括号来明确优先级。
2023-06-16 22:59:13 149
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人