Jasper Ji

博观而约取,厚积而薄发。

Go学习笔记

2021-03-29 14:46

开始用Go应该是17年底的时候,那会做游戏,后台是用Go写的,虽然我主要负责Unity客户端方面的工作,不过也是经常帮忙给后端的Go小伙解决一些问题,自己也写一些Go的小东西。

后来又做物流系统,重写系统时有考虑用Go,不过因为大部分的外部接口对接都是Java的,为了省事就使用了Java。不过如果是自己的项目的话,还是愿意用Go,毕竟Java还是有点重。

IDE

原来有用过GoLand,为了轻量点,先用VS Code,众所周知的原因安装插件老失败,最后设置Go的代理就可以了。

go env -w GOPROXY=https://goproxy.cn,direct

C程序员的礼物

直接试着写个搜索二叉树,其实除了语法上跟C的一些类型定义次序上有点不习惯外,其他方面对于C程序员来说,还是熟悉的用法,比如指针的指针这样的概念,毕竟Go是原来C的那帮人搞的,兼顾C的同时也结合不少Python这样的现代语言的特性。

package main

import "fmt"

type Node struct {
	data      int
	leftNode  *Node
	rightNode *Node
}

func insert(tree **Node, value int) {
	if *tree == nil {
		var tempNode Node
		tempNode.data = value
		*tree = &tempNode
		return
	}

	if (*tree).data > value {
		insert(&(*tree).leftNode, value)
	} else if (*tree).data < value {
		insert(&(*tree).rightNode, value)
	}
}

func perOrder(tree *Node) {
	if tree != nil {
		fmt.Printf("data: %d\n", tree.data)
		perOrder(tree.leftNode)
		perOrder(tree.rightNode)
	}
}

func main() {
	var tree *Node

	insert(&tree, 9)
	insert(&tree, 4)
	insert(&tree, 15)
	insert(&tree, 6)
	insert(&tree, 12)
	insert(&tree, 17)
	insert(&tree, 2)

	perOrder(tree)
}

Comments