Go语言
记录Go的学习笔记
一许流星
不要在该拼搏的时候选择安逸!
展开
-
Golang的Channel基本定义和用法
1.无缓冲Channelpackage mainimport ( "fmt" "time")// 子goroutine,主goroutine结束,子也结束func NewTask() { i := 0 for { i++ fmt.Println("new Goroutine: i =", i) time.Sleep(1 * time.Second) }}func main() { //定义一个无缓冲的channel c := make(chan int) g原创 2021-04-12 22:06:25 · 1536 阅读 · 1 评论 -
Go的结构体标签
1.代码示例package mainimport ( "fmt" "reflect")// info . doc 标签type Person struct { ID int64 `info:"id" doc:"编号"` Name string `info:"name" doc:"名字"` Age int64 `info:"age" doc:"年龄"`}func FindTag(str interface{}) { t := reflect.TypeOf(str).E原创 2021-04-11 23:34:42 · 715 阅读 · 0 评论 -
Go反射介绍
1.reflect代码示例package mainimport ( "fmt" "reflect")func RefectNum(arg interface{}) { fmt.Println("type :", reflect.TypeOf(arg)) fmt.Println("value :", reflect.ValueOf(arg))}type Person struct { ID int64 Name string Age int64}func (thi原创 2021-04-11 23:13:39 · 633 阅读 · 0 评论 -
Interface空接口万能类型与类型断言机制
1.空接口interface{}int, string. float32,float64.struct…都实现了interface{}package mainimport "fmt"// interface{}是一个万能数据类型func MyFunc(arg interface{}) { fmt.Println("my func is running") fmt.Println(arg) // interface如何区分 此时引用的底层数据类型到底是什么 // go中原创 2021-04-11 20:47:20 · 276 阅读 · 0 评论 -
Go的面向对象
1.对象的创建package mainimport "fmt"// 声明一种新的数据类型 ...// type myInt int// 定义一个结构体type Hero struct { Name string Ad int Level int}// 给类增加一个方法func (this *Hero) GetName() { fmt.Println("name =", this.Name)}// 给类增加一个方法func (this *Hero) SetNa原创 2021-04-11 20:07:34 · 125 阅读 · 0 评论 -
map的声明和使用
1.map的声明方法package mainimport "fmt"func main() { // 1.声明myMap是一个map类型, key 是string ,value是int // 在使用map前,给myMap开辟空间 myMap := make(map[string]int) myMap["one"] = 1 // 不make会报错 fmt.Printf("my map = %v\n", myMap) // 2. 声明+自动开辟空间 myMap2 := map[str原创 2021-04-11 17:16:36 · 1362 阅读 · 0 评论 -
Go中的array和slice
文章目录1.数组的介绍1.1 数组的声明方式1.2 数组注意点2.切片的介绍2.1 slice(动态数组的声明方式)2.2 切片注意点2.3 切片的容量的追加2.3.1 容量未满2.3.2 容量满了再append: 会默认申请一个caps=5的空间2.3.4 当caps很大时,go为了节省内存, 会先尝试申请1/4的空间2.4 切片的截取1.数组的介绍1.1 数组的声明方式// 固定长度的数组var myArray1 [10]intmyArray2 := [10]int{1,2,3,4}my原创 2021-04-11 16:52:49 · 251 阅读 · 0 评论 -
Go中defer 的使用
defer:函数执行完后执行的语句文章目录1.示例代码2. defer的知识点1. defer执行顺序2.defer和return的谁先执行1.示例代码package mainimport "fmt"func main() { // 写入defer关键字 fmt.Println("hello main 1,,,,") defer fmt.Println("main end 1") defer fmt.Println("main end 2") fmt.Println("hello.原创 2021-04-11 15:58:18 · 126 阅读 · 0 评论 -
Go中的指针
1.值传递2.指针传递函数执行步骤如下:p *int定义指针类型的变量 ⇒ &p = 0x0843A048, p(内存)=0x0000000 # 0的地址位置即:指针实质: p指向了0的内存地址var a=1定义a ⇒ a(内存)=1, &a = 0x0843A040&aa的指针地址 ⇒ &a = 0x0843A040p = &ap(内存)=0x0843A040, &p = 0x0843A0原创 2021-04-11 10:06:46 · 168 阅读 · 0 评论 -
2.Go语法--const和iota的使用
1.变量package mainimport "fmt"// 声明变量// var name string// var age int// var isOk bool// 1.批量声明--初始值var ( name string // "" 默认值 age int // 0 isOk bool // false)func main() { name = "xxx" age = 26 isOk = true // 2.go 语言中非变量声明了必须使用(不原创 2021-04-11 00:05:30 · 368 阅读 · 1 评论 -
1.Go源码安装
目录1.下载安装源码包2.配置环境变量3.检查是否安装成功4.配置记录1.下载安装源码包https://golang.org/doc/install/source?download=go1.16.3.src.tar.gztar -zxvf go1.16.3.src.tar.gz -C /usr/local2.配置环境变量# 1.修改环境变量vim ~/.bash_profile# 2.最后加上# go配置环境变量export GOROOT=/usr/local/goexport G原创 2021-04-10 22:49:31 · 1052 阅读 · 0 评论