随笔分类 -  golang

摘要:1. 概念 go中可以并发执行的活动单元称为goroutine当一个go程序启动时,一个执行main function的goroutine会被创建,称为main goroutinego func() 使用go语句开启一个新的goroutine之后,go语句之后的函数调用将在新的goroutine中执 阅读全文
posted @ 2021-10-13 15:24 专职 阅读(642) 评论(0) 推荐(0) 编辑
摘要:GOPATH 是 Go 语言的工作目录,他的值可以是一个目录路径,也可以是多个目录路径,每个目录都代表 go 语言的一个工作区。 我们开发 Golang 项目时,需要依赖一些别的代码包,这些包的存放路径就与 GOPATH 有关。 在 v1.11 版本之前,所有的代码包都要放到 $GOPATH/src 阅读全文
posted @ 2021-10-13 10:40 专职 阅读(3010) 评论(0) 推荐(0) 编辑
摘要:package main import "fmt" func factorialFor(num int) (ret int) { // 循环求阶乘 ret = 1 for i := 1; i <= num; i++ { ret *= i } return } func factorialRecurs 阅读全文
posted @ 2021-10-12 10:58 专职 阅读(131) 评论(0) 推荐(0) 编辑
摘要:package main import "fmt" // 一个函数中最多只可有一个可变参数, 如果参数列表中还有其它类型的参数,则可变参数写在最后 // 注意:参数不定,参数的个数是0-N个,也就是说可变参数可以为空 func sumNumber(num1 float64, nums ...floa 阅读全文
posted @ 2021-10-12 10:22 专职 阅读(319) 评论(0) 推荐(0) 编辑
摘要:先理解:数组指针它的类型时指针,指针数组它的类型时数组 1. 数组指针当做函数的参数 package main import "fmt" func changeData(dataArray *[3]string) { // 数组指针当做函数参数 dataArray[1] = "马亚南" fmt.Pr 阅读全文
posted @ 2021-10-11 20:57 专职 阅读(574) 评论(0) 推荐(0) 编辑
摘要:package main import "fmt" type human struct { name, phone string age int8 } type student struct { human // 嵌套结构体 school string } type employee struct 阅读全文
posted @ 2021-10-11 15:57 专职 阅读(523) 评论(0) 推荐(0) 编辑
摘要:接口对象的转型有两种方式: 1. 方式一:instance,ok:=接口对象.(实际类型) 如果该接口对象是对应的实际类型,那么instance就是转型之后对象,ok的值为true 配合if...else if...使用 2. 方式二: 接口对象.(type) 配合switch...case语句使用 阅读全文
posted @ 2021-10-11 15:02 专职 阅读(124) 评论(0) 推荐(0) 编辑
摘要:1. 在项目中实现注册成功之后,向用户发送邮件、微信提醒 package main import "fmt" type IMessage interface { send() bool } type Email struct { email string content string } func 阅读全文
posted @ 2021-10-10 20:46 专职 阅读(43) 评论(0) 推荐(0) 编辑
摘要:package main import ( "fmt" ) type School struct { brand string city string } type Class struct { name string number int *School } func main() { // 创建 阅读全文
posted @ 2021-10-10 17:58 专职 阅读(53) 评论(0) 推荐(0) 编辑
摘要:package main import ( "fmt" "reflect" ) func main() { // 如何获取结构体标签? type Person struct { name string "姓名" age int32 "年龄" blog string "博客" } p1 := Pers 阅读全文
posted @ 2021-10-10 17:03 专职 阅读(54) 评论(0) 推荐(0) 编辑
摘要:p1是结构体,p2是结构体指针。 2. 声明并赋值结构体和结构体指针 package main import "fmt" type Person struct { name string age int } func main() { // 初始化结构体(创建一个结构体对象) p1 := Perso 阅读全文
posted @ 2021-10-10 16:31 专职 阅读(439) 评论(0) 推荐(0) 编辑
摘要:package main import ( "fmt" "unsafe" ) func main() { // 根据内存地址获取下一个字节内存地址对应的值 dataList := [3]int8{11, 22, 33} // 1. 获取数组第一个元素的地址 var firstDataPtr *int 阅读全文
posted @ 2021-10-10 13:58 专职 阅读(657) 评论(0) 推荐(0) 编辑
摘要:1. defer是go提供的一种资源处理的方式。defer的用法遵循3个原则在defer表达式被运算的同时,defer函数的参数也会被运算。如下defer的表达式println运算的同时,其入参i也会被运算,结果为初始化值0,故defer调用中会打印“0” package main import " 阅读全文
posted @ 2021-10-09 11:47 专职 阅读(546) 评论(0) 推荐(0) 编辑
摘要:1. golang中的map有自己的一套实现原理,其核心是由hmap和bmap两个结构体实现的 2. 初始化map package main func main() { // 初始化一个可容纳10个元素的map map1 := make(map[string]string, 10) // 第一步:创 阅读全文
posted @ 2021-10-08 13:40 专职 阅读(553) 评论(0) 推荐(0) 编辑
摘要:1. 声明与初始化 // map的声明与初始化 userInfo := map[string]string{"name": "马亚南", "age": "18"} fmt.Println(userInfo) fmt.Println(userInfo["name"]) // 马亚南 userInfo[ 阅读全文
posted @ 2021-10-07 18:54 专职 阅读(79) 评论(0) 推荐(0) 编辑
摘要:1. 切片中追加数据,如果没有扩容,内存地址不发生变化 // 1. 切片中追加数据,如果不扩容的话,内存地址不发生变化 v1 := make([]int, 1, 3) v2 := append(v1, 55) fmt.Println(v1, v2) fmt.Printf("%p, %p\n", &v 阅读全文
posted @ 2021-10-07 11:41 专职 阅读(296) 评论(0) 推荐(0) 编辑
摘要:1. 数组的声明 package main import "fmt" func main() { // 数组:定长且元素类型一致的数据集合 // 方式一:先声明在赋值,声明时内存中已经开辟了空间 var nums [3]int // 内存中已开辟空间,初始化的值是0 nums[0] = 999 nu 阅读全文
posted @ 2021-10-06 17:18 专职 阅读(76) 评论(0) 推荐(0) 编辑
摘要:1. 字符串的底层实现原理 package main import ( "fmt" "strconv" "unicode/utf8" ) func main() { // 计算机中所有的操作和数据最终都是二进制 // go语言中的字符串是utf-8编码的序列 // 字符串本质上是utf-8编码的序列 阅读全文
posted @ 2021-10-06 13:58 专职 阅读(471) 评论(1) 推荐(1) 编辑
摘要:var price float32 = 39.29 float64和float32类似,只是用于表示各部分的位数不同而已,其中:sign=1位,exponent=11位,fraction=52位,也就意味着可表示的范围更大了。 二、decimal类型 由于golang中默认没有decimal类型,如 阅读全文
posted @ 2021-10-05 20:30 专职 阅读(1081) 评论(0) 推荐(0) 编辑
摘要:package main import ( "fmt" "math" ) func main() { fmt.Println(math.Abs(-19)) // 取绝对值 fmt.Println(math.Ceil(3.14)) // 向下取整 fmt.Println(math.Floor(3.14 阅读全文
posted @ 2021-10-05 15:05 专职 阅读(1037) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示