[GO语言初探 | 青训营笔记 ]

112 阅读2分钟

Go语言是Golanguage的简称,始于2007年,是一种开源的强类型、编译并发型语言

1. why GO

Go语言特色:

  • 简洁、快速、安全
  • 并行、有趣、开源
  • 内存管理、数据安全、编译迅速

Go语言用途:

  • Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过。
  • 区块链最主流的编程语言,支持数据处理和大数据并发能力,国外如Google、Amazon AWS、Cloudflare、CoreOS等,国内如七牛、阿里、小米、京东等都已经开始大规模使用Golang开发其云计算相关产品。
  • 相较于C/C++,开发效率高,运维难度低;相较于Lua/Python,编译型语言,性能更优。

2.环境选择

常规开发平台为VScode和Goland

3.HelloWord和guessing-game

你好世界

package main  
  
import "fmt"  
  
func main() {  
   fmt.Println("Hello, World!")  
}

猜数游戏

package main

import (
	"bufio"
	"fmt"
	"math/rand"
	"os"
	"strconv"
	"strings"
	"time"
)

func main() {
	maxNum := 100
	rand.Seed(time.Now().UnixNano())
	secretNumber := rand.Intn(maxNum)
	// fmt.Println("The secret number is ", secretNumber)

	fmt.Println("Please input your guess")
	reader := bufio.NewReader(os.Stdin)
	for {
		input, err := reader.ReadString('\n')
		if err != nil {
			fmt.Println("An error occured while reading input. Please try again", err)
			continue
		}
		input = strings.Trim(input, "\r\n")

		guess, err := strconv.Atoi(input)
		if err != nil {
			fmt.Println("Invalid input. Please enter an integer value")
			continue
		}
		fmt.Println("You guess is", guess)
		if guess > secretNumber {
			fmt.Println("Your guess is bigger than the secret number. Please try again")
		} else if guess < secretNumber {
			fmt.Println("Your guess is smaller than the secret number. Please try again")
		} else {
			fmt.Println("Correct, you Legend!")
			break
		}
	}
}

4.Go的发展方向

  • 区块链研发工程师
    区块链的核心思想是去中心化,让每个人都能参加数据库的记录,比如虚拟货币
  • Go服务端
    目前服务器端主要采用C和C++实现,只要是C和C++能做的事情,Go语言就可以实现且做的不错。因为Go的作者Ken Thompson也是C语言的设计者,相当于对C语言设计的部分优化,比如处理日志、数据打包、虚拟机处理等,据说美团后台的流量处理就是采用Go语言编写。Go语言据处理和大并发处理的能力非常突出
  • 游戏软件工程师
    游戏数据通道会使用Go语言
  • Golang分布式/云计算软件工程师
    盛大云CDN、京东分布式文件系统

了解go的语言特性和发展情况,对于我们认知主流技术更迭,健全自身技术发展,对接云原生等新趋势,进而掌握个人发展主动权有重要意义。