莫忘输赢-Go
Go语言的学习笔记
莫忘输赢
书读百遍,其义自见...
展开
-
Go-一个获取值类型例子
1、代码package mainimport "fmt"type person interface { func1()}type sperson struct {}func (s *sperson) func1() { fmt.Println("fun1")}func main() { var p person = &sperson{} fmt.Printf("%T", p)}2、输出原创 2021-04-26 16:13:44 · 155 阅读 · 0 评论 -
Go-一个sync.WaitGroup例子
1、代码package mainimport ( "fmt" "sync" "time")func main() { var wg sync.WaitGroup wg.Add(2) n1 := 0 n2 := 0 go func() { for { time.Sleep(time.Second) n1++ fmt.Println("wait<1> n1 = ", n1) if n1 >= 5 { break }原创 2021-04-23 15:34:21 · 115 阅读 · 0 评论 -
Go-一个sync.Map例子
1、代码package mainimport ( "fmt" "math/rand" "sync" "time")var sMap sync.Mapvar b = falsefunc readMap(sInfo string, sMap *sync.Map) { for { if b { break } time.Sleep(time.Second) xV, _ := sMap.Load("x") fmt.Printf("%v sMap['x']=原创 2021-04-22 17:29:16 · 197 阅读 · 0 评论 -
Go-一个swich例子
1、代码package mainimport "fmt"func main() { var marks int = 90 var grade string = "" switch marks { case 90: grade = "A" default: grade = "Z" } fmt.Println("grade:", grade)}2、输出原创 2021-04-23 08:27:33 · 92 阅读 · 0 评论 -
Go-一个线程例子
package mainimport ( "fmt" "sync" "time")func NowTime() int64 { nowTime := time.Now().Unix() return nowTime}func main() { ch := make(chan int, 2) var l sync.Mutex go func() { fmt.Println("我是1号上锁,当前时间是:", NowTime()) l.Lock() fmt.Print.原创 2021-04-20 20:39:37 · 184 阅读 · 0 评论 -
Go-时间戳、当前时间年、月、日等及定时器
1、代码package mainimport ( "fmt" "time")func main() { now := time.Now().Unix() //获取当前时间 fmt.Println(now) //显示当前时间 time.Sleep(time.Second) //线程休眠 fmt.Println(time.Now().Unix() - now) //线程的时间间隔 //显示原创 2021-04-21 10:31:15 · 283 阅读 · 0 评论 -
Go-一个接口例子
1、代码package mainimport "fmt"//定义接口 打电话接口type Phone interface { call()}type NokiaPhone struct {}type IPhone struct {}func (ins NokiaPhone) call() { fmt.Println("i am nokia,i call you!")}//实现接口func (ins IPhone) call() { fmt.Println("i原创 2021-04-21 10:38:52 · 77 阅读 · 0 评论 -
Go-一个for例子
1、代码package mainimport "fmt"func main() { for i := 1; i <= 5; i++ { fmt.Println(i) } fmt.Println("---------------") j := 1 for j <= 5 { fmt.Println(j) j++ } fmt.Println("---------------") k := 1 for { fmt.Println(k) k++原创 2021-04-21 10:42:02 · 96 阅读 · 0 评论 -
Go-一个使用mysql的例子
1、安装驱动在cmd中输入go get github.com/go-sql-driver/mysql2、代码package mainimport ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql")func main() { //打开数据库 db, err := sql.Open("mysql", "root:wjl@tcp(127.0.0.1:3306)/test?charset=utf8") if e原创 2021-04-22 08:09:00 · 99 阅读 · 0 评论 -
Go-一个Map例子
1、代码package mainimport "fmt"func main() { var smap map[string]string smap = make(map[string]string) smap["a"] = "apple" smap["b"] = "banana" fmt.Println(smap) delete(smap,"a") fmt.Println(smap)}2、输出原创 2021-04-23 08:34:17 · 98 阅读 · 0 评论 -
Go-一个数组例子
1、代码package mainimport "fmt"func myfun1(x [5]int) { fmt.Println(x)}func myfun2(x []int) { fmt.Println(x)}func myfun3(x *int) { fmt.Println(x)}func main() { var x1 [5]int = [5]int{1, 2, 3, 4, 5} var x2 [5]int = [5]int{1} //var x3 [5]in原创 2021-04-21 10:51:35 · 82 阅读 · 0 评论 -
Go-一个线程读写锁例子
1、Go语言中的读写锁1、读写锁的定义var rw sync.RWMutex2.、读锁锁定与解锁rw.RLock()//上锁rw.RUnlock()//解锁3、写锁的锁定或解锁rw.Lock()//上锁rw.Unlock()//解锁4、互斥情况原创 2021-04-21 09:40:21 · 258 阅读 · 0 评论 -
Go-一个切片例子
1、代码package mainimport "fmt"func printSlice(x []int) { fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x)}func main() { //创建切片 nums := []int{0, 1, 2, 3, 4} //打印切片 fmt.Println(nums) //提取新的切片 nums1 := nums[0:1] fmt.Println(nums1)原创 2021-04-21 11:00:54 · 128 阅读 · 0 评论 -
Go-一个recover()函数使用例子
1、代码package mainimport ( "fmt" "runtime/debug")func TestRecover(num int) { //匿名函数 函数退出时候执行 defer func() { if err := recover(); err != nil { debug.PrintStack() } }() var arr [2]int arr[num] = 0 fmt.Printf("exit num = %d\n", num)}f原创 2021-04-25 10:06:27 · 499 阅读 · 0 评论 -
Go-一个稍微复杂的接口例子
1、代码package mainimport "fmt"type interface1 interface { func1() func2()}type interface2 interface { func3() func4() func5()}type stu1 struct {}func (s *stu1) func1() { fmt.Println("func1")}func (s *stu1) func2() { fmt.Println("fun原创 2021-04-26 13:52:38 · 114 阅读 · 0 评论 -
Go-一个结构体例子
1、代码package mainimport "fmt"type person struct { name string sex string age int}func main() { var p1 person p1.name = "xxx" p1.sex = "xxx" p1.age = 1 fmt.Println(p1) var p2 person = person{"xxx", "xxx", 2} fmt.Println(p2)}2、输出原创 2021-04-21 10:58:09 · 93 阅读 · 0 评论 -
Go-一个多返回值函数例子
1、代码package mainimport "fmt"func getdata() (int, int) { return 1, 2}func main() { a, _ := getdata() _, b := getdata() c, d := getdata() fmt.Println(a) fmt.Println(b) fmt.Println(c) fmt.Println(d)}2、输出原创 2021-04-21 11:09:27 · 94 阅读 · 0 评论 -
Go-一个打印pi值例子
1、代码package mainimport ( "fmt" "math")func main() { fmt.Printf("%f\n", math.Pi) //直接输出pi的值 fmt.Printf("%.2f\n", math.Pi) //保留两位小数}2、输出原创 2021-04-22 08:24:19 · 524 阅读 · 0 评论 -
Go-一个给自定义整数类型添加成员函数的例子
1、代码package mainimport "fmt"type myInt int//编写成员函数func (a1 myInt) add(a2 myInt) myInt { return a1 + a2}func (a1 myInt) sub(a2 myInt) myInt { return a1 - a2}func main() { var x myInt = 1 fmt.Println(x.add(2)) //x+2 fmt.Println(x.sub(2))原创 2021-04-21 11:06:20 · 139 阅读 · 0 评论 -
Go-一个指针例子
1、代码package mainimport "fmt"func main() { var x int = 1 fmt.Printf("变量的x的地址为%x", &x) var pint *int fmt.Printf("未定义的指针:%x", pint)}3、输出原创 2021-04-21 10:55:24 · 135 阅读 · 0 评论 -
Go-一个定义类及继承此类的例子
1、代码package mainimport "fmt"type Person struct { name string sex string age int}/*创建此方法默认会创建 func (s Person) getName() string{}*/func (s *Person) getName() string { return s.name}func (s *Person) setName(newName string) { s.name = ne原创 2021-04-22 08:10:55 · 142 阅读 · 0 评论 -
Go-一个父类调用子类方法的例子
1、代码package mainimport "fmt"type MyInterface interface { PrintSelf()}type MyInstance struct { MyInterface}func (ins *MyInstance) PrintSelf() { fmt.Println("i am inst")}func (ins *MyInstance) PrintSpecial() { fmt.Println("i am special")原创 2021-04-23 13:03:16 · 1591 阅读 · 0 评论 -
Go-一种实现区分debug或者release方式(伪)
一、代码package mainimport "fmt"var dr string = "debug"func main() { if dr == "debug" { fmt.Println(dr) }}二、原创 2021-06-18 17:14:33 · 1294 阅读 · 0 评论 -
Go-一个函数返回值例子(return 后面并没有返回值,返回值在函数内部被直接修改)<特殊>
1、代码package mainimport "fmt"func MyFun() (name string) { name = "MyFun" return}func main() { funName := MyFun() fmt.Println(funName)}2、输出原创 2021-05-07 17:06:15 · 452 阅读 · 0 评论 -
Go-mod模式引用本地包(详解,编辑器是vscode)
在mod模式下引入本地包的问题困扰我真的好久好久,查看无数资料,头疼几个晚上,经历无数次失败最终得以解决这个问题,按如下步骤操作一、在桌面上新建文件夹testMod二、右击文件夹用vscode打开,建立如下目录结构go文件内容现在都是空的,目录结构如此就行三、集成终端内打开,执行go mod int TestMod说明一下,TestMod是和你的文件夹名字一致四、之后向xxx1.go xxx2.go yyy1.go中添加如下内容需要注意的是包名必须和你的目录名字.原创 2021-07-05 11:17:50 · 2403 阅读 · 3 评论 -
Go-一个使用strings.Split的例子
一、代码package mainimport ( "fmt" "strings")func main() { s := "a#b#c#d" size := strings.Split(s, "#") fmt.Println(len(size)) fmt.Println(s[0], s[1], s[2], s[3])}2、输出原创 2021-05-26 11:36:27 · 104 阅读 · 0 评论 -
Go-一个使用不定参数的函数例子
1、代码package mainimport "fmt"func add(args ...int) int { var res = 0 for _, arg := range args { res += arg } return res}func main() { res2 := add(1, 2) res3 := add(1, 2, 3) fmt.Printf("res2:%d res3:%d ", res2, res3)}2、输出...原创 2021-05-07 17:26:53 · 151 阅读 · 0 评论 -
Go-一个使用%v、%+v、%#v的例子
1、代码package mainimport "fmt"type Person struct { name string age int sex string}func main() { p := &Person{name: "xxx", age: 18, sex: "男"} fmt.Printf("%v\n", p) fmt.Printf("%+v\n", p) fmt.Printf("%#v\n", p)}2、输出原创 2021-04-28 19:06:22 · 2342 阅读 · 0 评论 -
Go-一个写txt文件例子
一、代码package mainimport ( "fmt" "os" "bufio")func WriteFile() { path := "./eg.txt" //os.O_WRONLY | os.O_CREATE file, err := os.OpenFile(path, os.O_RDWR | os.O_APPEND | os.O_CREATE, 0666) if err!=nil{ fmt.Println("file open error:",err) re原创 2021-07-02 11:51:45 · 1111 阅读 · 0 评论 -
Go-一个使用枚举的例子
一、代码package mainimport "fmt"type MyNumEnum intconst ( MyNumEnum_0 MyNumEnum = iota MyNumEnum_1 MyNumEnum_2 MyNumEnum_3 MyNumEnum_4)func main() { fmt.Println("MyNumEnum_0 = ",MyNumEnum_0," MyNumEnum_1 = ",MyNumEnum_1)}二、输出...原创 2021-07-15 10:34:18 · 172 阅读 · 0 评论 -
Go-一个使用不定多参的函数例子
1、代码package mainimport "fmt"//传入多参变量(是一个数组)func printStringArr(args ...string) { fmt.Println(args)}func main() { stringArr := []string{"a", "b", "C"} //执行函数 printStringArr(stringArr...)}2、原创 2021-06-11 09:41:42 · 101 阅读 · 2 评论 -
Go-一个使用time.AferFunc例子
1、代码package mainimport ( "fmt" "time")func main() { waitchan := make(chan int) time.AfterFunc(5*time.Second, func() { fmt.Println("AfterFunc excuted!") waitchan <- 1 }) <-waitchan}2、输出原创 2021-04-30 14:37:43 · 341 阅读 · 0 评论 -
Go-一个Map的例子,关于访问元素
1、代码package mainimport "fmt"func main() { intMap := make(map[int]int) intMap[0]++ fmt.Println(intMap[0]) fmt.Println(intMap[1])//这里并不会向map中插入值,即map中只有一个元素intmap[0]=1,但是intMap[1]的确是零值 pIntMap := make(map[int]*int) //取出的是空值 nil tempInt := 1 p原创 2021-06-28 14:01:44 · 195 阅读 · 0 评论 -
Go-一个int切片和json相互转化的例子
一、代码package mainimport ( "encoding/json" "fmt")func main() { var is []int is = append(is, 1) is = append(is, 2) byteArr,_:= json.Marshal(is) //fmt.Println(string(byte)) sis := string(byteArr) var isbak []int json.Unmarshal(byteArr,&原创 2021-07-29 10:48:24 · 335 阅读 · 0 评论 -
Go-一个strings.Builder例子
1、代码package mainimport ( "fmt" "strings")func main() { s1 := "aaa" s2 := "bbb" s3 := "ccc" var sb strings.Builder sb.WriteString(s1) sb.WriteString(s2) sb.WriteString(s3) fmt.Println(sb.String())}2、输出原创 2021-04-30 17:08:22 · 222 阅读 · 1 评论 -
Go-一个使用sort.Slice对切片排序例子
一、代码package mainimport ( "fmt" "sort")type Person struct { Age int Name string}func main() { // var personArr []*Person p1 := &Person{Age: 1, Name: "小明"} p2 := &Person{Age: 5, Name: "小红"} p3 := &Person{Age: 4, Name: "小李"原创 2021-07-20 13:37:07 · 507 阅读 · 0 评论 -
Go-一个修改string中内部元素例子
一、代码package mainimport ( "fmt")func main() { var byteString string = "00000" byteArr := []byte(byteString) fmt.Println(byteArr) //修改切片中某个值 byteArr[0] = []byte("9")[0] //打应输出 fmt.Println(string(byteArr))}二...原创 2021-06-19 14:23:52 · 121 阅读 · 0 评论 -
Go-一个关于测试例子
一、代码package egtest_testimport( "testing" "fmt") func Test1Add2(t *testing.T){ if 1+2 == 3 { fmt.Println("test suc") } else { fmt.Println("test faild") }}需要注意的是 go语言中测试用例,文件名必须是*_test.go结尾即可,如果一切正常的话,在vscode中将会出现如下画面注意到 run test | de原创 2021-07-06 19:49:41 · 102 阅读 · 1 评论 -
Go-一个函数调用的堆栈信息例子
1、代码package mainimport ( "fmt" "path/filepath" "runtime" "strings")// 给定打印层数,一般3~5覆盖你的逻辑及封装代码范围func StackToString(count int) string { const startStack = 2 var sb strings.Builder //函数堆栈信息 for i := startStack; i < startStack+count; i++原创 2021-04-30 17:25:02 · 178 阅读 · 1 评论 -
Go-一个关于公有私有问题
原创 2021-04-26 17:30:24 · 145 阅读 · 0 评论