随笔分类 - golang
摘要:package main import ( "fmt" "reflect" ) type resume struct { // 反射解析结构体标签tag Name string `info:"name" doc:"我的名字"` Sex string `info:"sex"` } // 方法一:传递结
阅读全文
摘要:先重复一遍反射三定律: 1.反射可以将“接口类型变量”转换为“反射类型对象”。 2.反射可以将“反射类型对象”转换为“接口类型变量”。 3.如果要修改“反射类型对象”,其值必须是“可写的”(settable) 总结 下面详细说明了Golang的反射reflect的各种功能和用法,都附带有相应的示例,
阅读全文
摘要:package main import ( "fmt" "reflect" ) type User struct { Id int Name string Age int } func (u User) Call() { fmt.Println("user is called.") fmt.Prin
阅读全文
摘要:package main import "fmt" type Reader interface { ReadBook() } type Writer interface { WriteBook() } // 具体类型 type Book struct {} func (b *Book) ReadBo
阅读全文
摘要:Go 语言中会使用到的 25 个关键字或保留字: 1. 程序声明 import 导入 package 包 2. 程序实体声明和定义 chan 通道 var 变量声明 const 常量声明 func 用于定义函数和方法 interface 定义接口 map 字典/map struct 定义数据类型 t
阅读全文
摘要:package main import ( "fmt" "io/fs" "io/ioutil" "os" "path" "path/filepath" ) func main() { // 文件和路径相关的功能包含了:os、path、filepath、ioutil包 // 1. 创建文件夹 // (
阅读全文
摘要:package main import ( "fmt" "regexp" ) func main() { // 1. 根据字符串匹配 m1, _ := regexp.MatchString("foo.*", "seafood") fmt.Println(m1) // true m2, _ := re
阅读全文
摘要:1. os.Args package main import ( "fmt" "os" ) func main() { // 执行:./demo.exe 127.0.0.1 8000 // 输出切片类型:[C:\Users\mayanan\Desktop\pro_go\day01\demo.exe
阅读全文
摘要:package main import ( "encoding/json" "fmt" "reflect" ) type Info struct { // 结构体的字段,首字母必须大写,否则序列化时读取不到 Title string Count int } type Address struct {
阅读全文
摘要:1. main包 package main import ( "day01/utils" "fmt" ) //type File struct { // fd int // name string //} //func NewFile(fd int, name string) *File { //
阅读全文
摘要:package main import "fmt" type Base struct { name string } func (b *Base) m1() int { return 666 } type Son struct { // 如果结构体之间存在匿名嵌套关系,则 子结构体 可以继承 父结构
阅读全文
摘要:package main import "fmt" // 项目开发中可以为type声明的类型编写一些方法,从而实现对象.方法的操作 // 声明类型 type myInt int // int有的功能myInt都有 // 为MyInt类型自定义一个指针方法 // 此处可以使指针,可以是类型 *myIn
阅读全文
摘要:1. 结构体做函数的参数或返回值时,都会被重新拷贝一份如果不想拷贝,可以传递结构体指针 package main import "fmt" type Person struct { name string age int } var p = Person{"武沛齐", 18} func doSome
阅读全文
摘要:1. 非闭包时的结果 package main import "fmt" func main() { var funcSlice []func() for i := 0; i < 5; i++ { // 此处匿名函数创建了,但是匿名函数中的内容根本没有执行 f := func() { fmt.Pri
阅读全文
摘要:package main import ( "fmt" "strconv" ) func main() { // 匿名函数的使用:方式1 f1 := func(n1, n2 int) string { return strconv.Itoa(n1 + n2) } ret1 := f1(11, 22)
阅读全文
摘要:1. 函数当做函数的参数 package main import "fmt" type HandleFunc func(int) (int, bool) func add10(num1 int) (int, bool) { return num1 + 100, true } func proxy(d
阅读全文
摘要:### 下载指定版本 go get k8s.io/klog@v1.0.0 go get 命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装。 这个命令在内部实际上分成了两步操作:第一步是下载源码包,第二步是执行 go install 参数介绍: -u 用于下载指定的路径
阅读全文
摘要:package main import ( "fmt" "sync" "time" ) /* 高并发是golang语言最大的亮点 一个线程可以包含多个协程,共享堆不共享栈 协程一般由应用程序显示实现调度,上下文切换不需下到内核层,高效不少 golang中实现协程间通讯有两种方式: (1)共享内存型:
阅读全文
摘要:package main import "fmt" func main() { /* 以下程序会导致死锁 c := make(chan int) c <- 10 n1 := <-c fmt.Println(n1) 为什么在同一个goroutine中使用无缓冲通道会导致死锁? 原因:1. 如果通道无缓
阅读全文
摘要:1. Channel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)。 2. select package main import ( "fmt" "time" ) func fibonacci(c, quit chan
阅读全文