![](https://img-blog.csdnimg.cn/c5e65990a1cd4206909e4dc153eb669e.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
从 Java 到 golang
一个java开发的golang学习之旅
morningcat2018
情深不寿,慧极必伤
展开
-
golang 快速排序(递归实现)
// quicksort/quicksort.gopackage quicksortfunc QuickSort(source []int) []int { if len(source) < 2 { return source } pivot := source[0] var left, right []int for _, value := range source[1:] { if value < pivot { left = append(left, val原创 2021-11-07 16:54:57 · 634 阅读 · 0 评论 -
Golang 实现平衡二叉树--方法2
package avl2import "fmt"const LH = 1 /* 左高 */const EH = 0 /* 等高 */const RH = -1 /* 右高 */type AvlTreeNode struct { data int bf int /* 结点的平衡因子 */ lchild, rchild *AvlTreeNode}type AvlTree struct { root *AvlTreeNode}原创 2021-11-03 21:50:29 · 185 阅读 · 0 评论 -
Golang 实现平衡二叉树
// Tree.gopackage avlimport "fmt"type AVLTreeNode struct { Data int Parent *AVLTreeNode LeftTree *AVLTreeNode RightTree *AVLTreeNode}type AVLTree struct { Root *AVLTreeNode}func BuildTree() *AVLTree { return &AVLTree{nil}}f原创 2021-11-02 02:22:04 · 259 阅读 · 0 评论 -
golang 笔记13 interface
golang 笔记13 interfaceinterface 基础一个变量如果实现了接口中定义的所有方法 那么这个变量可以理解为这种接口类型的变量package interface_demoimport ( "fmt" "testing")// 定义接口type speaker interface { speak() // 只要实现了 speak 方法的变量都是 speaker 类型}type dog struct{ name string }type cat st原创 2021-10-12 02:15:42 · 66 阅读 · 0 评论 -
golang 笔记 附录-搜集的示例
golang 笔记 附录-常用示例类型转换func TestBaseType(t *testing.T) { // 类型转换 var x = -42 var ux uint = uint(x) var fl float64 = float64(x) fmt.Println(x, fl, ux)}计算md5值func TestMd5() { strValue := "hello world" hash := md5.New() _, error := hash.Write(原创 2021-10-12 02:01:33 · 86 阅读 · 0 评论 -
golang 笔记12 通道 chan
golang 笔记12 通道 chan双向通道与单向管道import ( "fmt" "math/rand" "testing" "time")/**chan int 双向通道chan<- int 单向通道 只发<-chan int 单向通道 只收*/func producer(producerName string, count int, pipe chan<- string) { // 单向通道 for i := 0; i < count;原创 2021-10-10 10:32:12 · 99 阅读 · 0 评论 -
golang 笔记11 时间
golang 笔记11 时间时间格式化import ( "fmt" "testing" "time")const DEFAULT_TIME_FORMAT = "2006-01-02 15:04:05"const YYYY_MM_DD = "2006-01-02"func printTime(t time.Time) { fmt.Println(t.Format(DEFAULT_TIME_FORMAT)) year, week := t.ISOWeek() fmt.Printf原创 2021-10-10 03:22:15 · 87 阅读 · 0 评论 -
golang 笔记10 指针基础
指针基础// Golang中的指针:// 不能进行指针运算// 不能得到一个常量的指针// 指针的一个高级应用是可以传递一个变量的引用func TestPointer1(t *testing.T) { // x == *&x var x = 123 var xPointer *int = &x // int 类型指针 fmt.Printf("%d\t%p\t%p\t%d\n", x, &x, xPointer, *xPointer) fmt.Println(.原创 2021-10-10 03:03:10 · 72 阅读 · 0 评论 -
golang 笔记9 结构体
golang 笔记9 结构体type// 自定义类型 [可以定义方法]type myInt int// 类型别名type youInt = intfunc TestType(t *testing.T) { var x myInt = 100 // package_name.myInt var y youInt = 100 // int fmt.Printf("%T\n", x) fmt.Printf("%T\n", y) /** === RUN TestType stru原创 2021-10-04 03:24:36 · 114 阅读 · 0 评论 -
golang 笔记8 函数
golang 笔记8 函数基本函数函数基础格式 : func 函数名(入参名 入参类型, …) 返回参数类型 … { // 函数体 }函数首字母大写为公开函数,可以通过包名.函数名的方式调用首字母小写为私有函数,只能在当前包内使用func Add(x, y int) int { // 与 Add(x int, y int) 等效 var sum = x + y return sum}命名返回值Go 的返回值可被命名,它们会被视作定义在函数顶部的变量func sp原创 2021-10-03 18:08:46 · 87 阅读 · 0 评论 -
golang 笔记7 Map 与 List
golang 笔记7 Map 与 Listmapmap(string,int)func TestMap1(t *testing.T) { // 定义 map(string,int) var myMap map[string]int = make(map[string]int, 10) // 赋值 myMap["x"] = 1 myMap["y"] = 3 myMap["z"] = 5 fmt.Println(myMap) // 取值 v, ok := myMap["zs"]原创 2021-10-03 13:46:02 · 1146 阅读 · 0 评论 -
golang 笔记6 切片
golang 笔记6 切片定义切片切片是一个引用类型切片是一个长度可变的数组因为切片是引用,所以它们不需要使用额外的内存并且比使用数组更有效率,所以在 Go 代码中 切片比数组更常用声明切片的格式是: var identifierName []type(不需要说明长度)func TestSlice1(t *testing.T) { var slice []int = make([]int, 10) for i := 0; i < len(slice); i++ { slic原创 2021-10-03 01:16:29 · 96 阅读 · 0 评论 -
golang 笔记5 数组
golang 笔记5 数组一维数组数组 必须给定容量var arr [5]int // 数组 必须给定容量for i := range arr { arr[i] = i}fmt.Printf("%T\n", arr)数组初始化var arr = [5]string{"123", "Hello", "world", "好", "go"} // 初始化for i := range arr { fmt.Println(arr[i])}fmt.Println("数组长原创 2021-10-03 00:58:27 · 259 阅读 · 0 评论 -
golang 笔记4 变量与常量和控制语句
golang 笔记4 变量与常量和控制语句变量/**定义在函数体外部为全局变量*/var str string = "hello world"// 全局变量可以不使用func fun1() { // 函数内部为局部变量}常量// 常量的声明与变量类似,只不过是使用 const 关键字。// 常量不能用 := 语法声明。const World = "世界"const ( // 将 1 左移 100 位来创建一个非常大的数字 // 即这个数的二进制是 1 后面跟着原创 2021-10-02 21:51:07 · 96 阅读 · 0 评论 -
golang 笔记3 基本类型
golang 笔记3 基本类型定义局部变量的几种方式func BaseType() { // 定义在函数内的为局部变量 var name string = "morningcat" // 完整 var name2 = "morningcat" // 类型推断 name3 := "morningcat" // 简短声明 [只能声明局部变量] // 定义在函数内的变量,声明后必须使用,否则通过不了编译}字符串var name string = "morningcat"// 多行原创 2021-10-02 16:08:31 · 102 阅读 · 0 评论 -
golang 笔记2 Go 与 Java 语法上的区别
golang 笔记2 Go 与 Java 语法上的区别区别结尾无需使用 ;strValue := "hello world"fmt.Println(strValue)定义的局部变量必须使用仅声明一个局部变量却不使用,无法通过编译func fun1() { str := "你好" // 编译报错}变量类型在变量名后面var strValue string = "hello world"函数返回值在函数名后面func hello(name string) str原创 2021-10-02 15:07:17 · 111 阅读 · 0 评论 -
golang 笔记1 基本知识
golang 笔记1 基本知识基础Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.golang官网 : golang.org/golang github : github.com/golang/go安装https://golang.org/doc/install➜ ~ go versiongo version go1.原创 2021-10-02 14:32:21 · 64 阅读 · 0 评论 -
GoLang 闭包实践
// LearnGoProject Projectmoc - |- closure.gomain.gogo.mod---// go.modmodule LearnGoProjectgo 1.16---// closure.gopackage mocimport "fmt"func TestClosure() { addFunc1 := addN(10) fmt.Printf("%d\n", addFunc1(3)) fmt.Printf("%d\n"原创 2021-03-10 23:25:06 · 106 阅读 · 0 评论 -
golang 通道小实践
package chaneel_demovar chanGroup sync.WaitGroup/**chan int 可发可收(双向通道)chan<- int 只能发送(单向通道)<-chan int 只能接收*/func producer(header string, pipe chan<- string) { chanGroup.Add(1) defer chanGroup.Done() for i := 1; i <=原创 2021-06-01 00:18:32 · 79 阅读 · 0 评论