这是我参与⌈第五届青训营⌋伴学笔记创作活动的第1天。今天主要是想和大家分享一下我作为一个Golang小白在入门时的一些心得。
Golang的语法与C/C++和java还是有挺多不同的。首先是程序入口,入口函数main一定要放在package main包下,函数的定义是“func 函数名 (参数列表) 返回值”。这种形式对于我这样一个学习C++和java出身的学生而言可以说是十分反常规的,然而这在Go语言中确是常态。除函数外,Go语言中变量的定义也是按照“var 变量名 数据类型”的形式进行定义的。
一个main函数的定义应该是这样的形式:
package main
import "fmt"
func main() {
//函数体
fmt.Println("Hello World go!")
}
在Go语言中,函数是“一等公民”,其地位非常高,在Go语言中一个函数甚至可以有多个返回值,这与C++和java这类面向对象的语言是有很大差别的。
说到面向对象,Go语言是没有类的概念的,有的只是结构体。结构体的定义是“type 结构体名 struct”。
这是Go语言入门项目中的简易电子词典项目里的一个结构体:
type DictRequest struct {
TransType string `json:"trans_type"`
Source string `json:"source"`
UserID string `json:"user_id"`
}
一个完整的Go程序需要包含包名,引用,程序入口。引用就是在程序中用到的库,需要添加在import{}中。这里附上入门项目中的猜数字的代码。这个程序非常简单,但是麻雀虽小五脏俱全,作为刚刚接触Go语言的同学用以了解Go语言的窗口还是十分不错的。
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
fmt.Println("Please input your guess")
var guess int
for {
fmt.Scanf("%d \n", &guess)
fmt.Println("Your 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
}
}
}