Go语言基础语法 | 青训营笔记

455 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

说实话,这玩意对小白有点太不友好了……我是一个纯纯的大二小白,Java也只是到了自己实现数据结构的阶段,什么数据流啥的都没学,所以跟不上今天的讲课。

一、Go环境配置与第一个Go程序

环境配置无非GOPATH和GOROOT配置,这玩意网上一搜一大堆; 第一个Go程序——hello word呗?(多少人第一次学语言会被这种东西提升盲目自信心

package main

import (
   "fmt"
)

func main() {
   fmt.Println("hello world")
}

没什么卵用,fmt相当于一个输出包,类似Java里的System.out(maybe

二、Go基础语法

1、定义变量

跟Java反过来,变量名在前,变量类型在后,:=符号可以用来不声明变量类型直接定义变量,我本人很不喜欢这种方式,过于随意,也不方便后期代码修改与查看;var用来声明变量组,可以同时声明多个变量,它后面的变量也不需要声明变量类型;声明常量用const,类似Java里的static;哦对了,不需要加;。下面放几个例子:

package main

import (
   "fmt"
   "math"
)

func main() {

   var a = "initial"

   var b, c int = 1, 2

   var d = true

   var e float64

   f := float32(e)

   g := a + "foo"
   fmt.Println(a, b, c, d, e, f) // initial 1 2 true 0 0
   fmt.Println(g)                // initialapple

   const s string = "constant"
   const h = 500000000
   const i = 3e20 / h
   fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
}

运行结果也显而易见: image.png 额,math包就是个数学函数包,同理Java的Math。

2、循环语句

只有for循环,多种样式:for { }就是个死循环,当然也有最标准的for循环——for n := 0; n < 5; n++ { },还有标准的while循环——当然也是for变种for i <= 3 { }

这东西我觉得不需要代码,跟Java的区别就是……不用加()

3、条件判断语句

ifswitch还都在。

if语句

跟Java没啥区别,ifelse ifelse还是这三个,不过不用(),但必须有{}

switch语句

除了传统Java的switch之外,多了一种变形的if意义,如下方代码:

t := time.Now()
switch {
case t.Hour() < 12:
   fmt.Println("It's before noon")
default:
   fmt.Println("It's after noon")
}

4、数组和切片

数组就是纯数组,切片嘛……

他俩的区别就是Java里面数组与ArrayList的区别。

5、map

就是其它语言里的哈希数据结构的啦~

6、方法

就是函数,这不过Go里的方法能有两个返回值,举几个例子,以便大家了解方法格式:

package main

import "fmt"

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

func add2(a, b int) int {
   return a + b
}

func exists(m map[string]string, k string) (v string, ok bool) {
   v, ok = m[k]
   return v, ok
}

func main() {
   res := add(1, 2)
   fmt.Println(res) // 3

   v, ok := exists(map[string]string{"a": "A"}, "a")
   fmt.Println(v, ok) // A True
}

当一个.go程序想要运行,必须有main函数,跟其他语言一样 运行结果如下: image.png

三、今天收个尾

怎么说呢,对于一个没有学过数据流的人来说,这个项目想要很大程度的融入进去可能性已经挺低了,只能说去学习一下Go,毕竟很多Java的老前辈、老学长也跟我护送过转Go的想法,但是是在他们已经熟练运用Java的情况下,而我还仅仅只是一个在路上的人。明天的话,我会按照自己当时学Java的顺序,去研究一下Go语言的面向对象相关知识……