走进Go语言基础语法 | 青训营

112 阅读3分钟

走进Go语言基础语法 | 青训营

一. GO语言的特性

特性解释
高性能、高并发无需使用复杂的第三方库
语法简单、学习曲线平缓类似于c语言,仅有FOR一种循环
丰富的标准库无需使用复杂的第三方库、稳定性、兼容性
完善的工具链编译、代码格式化、文档、包管理等
静态链接拷贝编译之后的文件
快速编译几乎最快
跨平台linux、windows、macOS等
垃圾回收与java类似

二. Golang+Goland安装配置

1.安装Golang

以Golang 1.17.12为例:进入All releases - The Go Programming Language

image.png 点击蓝色字体,进行安装,我安装的是go.1.17.12.windows-amd64.msi x86-64版本

2.配置环境

(1)打开go/bin目录下的cmd,输入go version,查看版本,如果出现1.17.12则表示安装成功

image.png

image.png

(2)若要使其全局有效,需配置环境变量

  • 打开高级系统设置
  • 点击系统变量->新建
  • 输入GOROOT+go所在目录(D:、Golang_1.17\go),确定
  • 点击PATH->编辑
  • 新建:%GOROOT%\bin,确定
  • 点击系统变量->新建
  • GOPATH->以后go项目存放位置,确定
  • 打开cmd
  • $ go env -w GO111MODULE=on
  • go env -w GOPROXY=https://goproxy.cn,direct

至此,环境变量配置完毕。

3.安装goland,这里安装2020.3版本

(1)一路向下,注意选好存放位置

(2)安装之后,即可使用啦!

三、基础语法

1.go语言的基础结构是这样:

package main

import "fmt"

func main(){
   fmt.Print("hello,world!")
}

可在terminal输入: go biuld hello.go 创建.exe文件 然后输入.\hello.go

也可以直接输入go run hello.go来实现运行代码。

2.变量

//全局变量
var a, b, c = 1, 2, 3
var fl float32
var (
   family_name = "li"
   name        = "yitong"
   age         = 20
)
var sub byte = 'a'
var deri int = '北'
var con bool = true
var address string = "lyt love xuyu"

当定义常量时,可以使用const A=100,这是他会自动确定类型。

3.if-else

同c/c++类似,如下:

if true {

   defer fmt.Print("1")

} else {

   defer fmt.Print("2")

}

continue继续循环、break退出循环

4.for

for i :=1;i<5;i++{
   fmt.Print(i)
}

5.switch

与c/c++/python不同,如果不在其中执行break,所有的case也不会依次输出,只会输出对应的哪一个。

a:=2
switch a{
case 1:fmt.Println(1)
case 2:fmt.Print(2)
default:
   fmt.Print("未知")
}

6.数组

func main(){
   //1
   var a [5]int
   a[4]=100
   //2
   b:=[5]int{1,2,3,4,5}
   //3
   var twoD [2][3]int
   for i:=0;i<2;i++{
      for j:=0;j<3;j++{
         twoD[i][j]=i*j
      }
   }
   fmt.Println("2d:",twoD)
   fmt.Println("1d:",a)
   fmt.Println("1d:",b)
}

7.map

//map无序
   m:=make(map[string]int)
   //添加
   m["one"]=1
   m["two"]=2
   //m长度
   fmt.Println("length:",len(m))
   //删除
   delete(m,"one")
   fmt.Println("m:",m)
   //
   m1:=map[string]int{"one":1,"two":2}
   fmt.Println("m1:",m1)

8.函数

返回形式写在后面

func add(a int,b int) int {
   return a*b
}

func add2ptr(n *int){
   *n+=2//取n的内容
}

四、猜谜游戏

通过math/rand随机生成一个数字,交给用户去猜,如下:‘

package main
import (
   "bufio"
   "fmt"
   "math/rand"
   "os"
   "strconv"
   "strings"
   "time"
)
func main(){
   maxNum:=100
   secretNumber:=rand.Intn(maxNum)
   rand.Seed(time.Now().UnixNano())//确保随机产生的值不同
   fmt.Print("The secret number is ",secretNumber)

   fmt.Print("Please input a num!")
   reader := bufio.NewReader(os.Stdin)
   for {
      input, err := reader.ReadString('\n')
      if err != nil {
         fmt.Print("An error occured while reading input.Please try again!", err)
         return
         continue

      }
      input = strings.TrimSuffix(input, "\n")
      guess, err := strconv.Atoi(input)
      if err != nil {
         fmt.Println("Invalid input!Please enter an integer value!")
         return
         continue
      }
      fmt.Print("Your guess is ", guess)
      if guess > secretNumber {
         fmt.Println("大了")
      } else if guess < secretNumber {
         fmt.Println("小了")
      } else{
         fmt.Println("对了")
         break
      }
   }
}

五、入门心得

作为一名程序员,我喜欢尝试不同的编程语言来实现各种任务。最近我开始使用Go语言,并且对这门语言产生了极大的兴趣。

首先,让我们来看看Go语言的优点。第一个优点就是速度。Go语言被设计成一门快速、高效的语言,能够快速处理大量数据和高并发请求。Go语言还具有自动垃圾回收和内置并发机制等特性,在编写大型应用时非常方便。

第二个优点是简单易学。作为一门静态类型的语言,Go语言的语法非常简单明了,它能够轻松地处理多线程和并发编程等复杂问题,同时也支持面向对象编程。此外,Go语言具有良好的可读性和可维护性,使得代码更加清晰易懂。

第三个优点是跨平台性。Go语言可以编写跨平台程序,因为它支持多种操作系统和平台。这也意味着可以用一些通用的工具或库来开发多个平台上的应用。