我与go的奇幻之旅-DayOne | 青训营笔记

132 阅读4分钟

这是我参与「第五届青训营 」笔记创作活动的第1天
在学习go之前很想谈一下我之前对go的看法,之前我一直跟着同龄人中的多数人学习java,c,python这些常用,之所以没学go呢是因为我接收了身边人的建议(go程序员只要有工作经验的老程序员,现在学会没什么用),现在报了青训营是因为百听不如一见,现在我就要去看看他的庐山真面貌,哈哈哈,i'm coming go.😉😉😉

一.基础语法

1.Hello World

老样子,每门语言的开门红都是Hello World! 但在输出之前需要配置环境变量,呜呜呜!下面开始配置环境变量。 现在官网下载go,这里我下载了1.19版本,然后用户配置环境变量,这里我下载到了F盘,然后再下载 GoLand,下载好之后再配置系统环境变量,GOROOT,GOPATH如何配置网上都有,这里就不详细展开啦!😀😀😀 接下来最激动人心的时刻!

 package main
 ​
 import "fmt"
 ​
 func main() {
     fmt.Print("Hello Goland!")
 }

哈哈哈,输出Hello World!的一瞬间我悬着的心得到安抚,环境变量配置成功,一次通过!🎉🎉🎉
这里提一下输出的三种形式:

  • fmt.Print普通输出,可以多个变量,用逗号隔开
  • fmt.Println换行输出
  • fmt.Printf格式输出
  • 奇怪的是我不小心用了python的 print 居然没报错居然还能运行,还有 println,什么用途暂时还没搞清楚

2.变量

课后总结后我发现go的变量命名有三种(准确来说应该是两种,这里有一个常量命名)

  • var 变量名 [变量数据类型] = 值
  • 变量名 := 值
  • const 变量名 [变量数据类型] = 值
 var a int = 21
 name := "Mao XiaoCheng"
 const school = "TYUT"
 fmt.Print("My name is ", name, ".I'm ", a, ".My university is ", school)
  • 首先这里变量的类型var和const可有可无(基本数据类型例如int,string这些,其它的还没学到),:= 简短型貌似没有数据类型。
  • 然后这里发现了输出的两种形式、fmt.Printfmt.Println区别很明显,一个是换行一个是不换行,许久未用过Println的我想起了java。
  • 还有一点就是我发现fmt.Println不仅的换行是在整个语句后加一个换行,就算你在Println后没有输出语句它仍然会输出一个空行。
  • 还有就是一个输出语句如果使用 , 拼接多个变量的话使用Println会在每个变量后面补一个空格,上网查了一下是值+空格 输出
  • 额,3,4点暂时有点想不明白为什么要这样,感觉多此一举或者用习惯了python突然有点无法接收😥😥😥
  • 还有在GoLand里面如果输出语句()里第一个变量前面未定义,会在语句前加一个a...:,猜测是简短变量命名,具体是什么不知道,应该学到后面就知道了

3.if循环

直接分析代码

 if a >= 18 {
     fmt.Println("I'm an adult.")
 } else {
     fmt.Print("I'm not an adult.")
 }
 if num := 6; num%2 == 0 {
     fmt.Println(num, "是偶数")
 } else {
     fmt.Println(num, "是奇数")
 }
  • 语法形式与其它语言大同小异,这里if语句后不加(),加了也不会报错
  • if语句内容不可写到一行,需要换行
  • 有个很新奇的是可以在if后命名变量,有点for语句的味道,有点意思,阿巴阿巴
  • 其它的也不多写了,还有代码没有else if,是有这个的哦,和其它语言一样的嗷

4.循环语句

看小标题就很特别,不是for循环不是while循环而是循环🧐,咱们往下看

 j := 0
 for {
     println(6)
     break
 }
 for i := 1; i <= 3; i++ {
     print(6)
 }
 for j <= 3 {
     fmt.Println(j)
     j++
 }
  • 和其它语言大多相同的是都有的for后的三大宝,依旧是分号和中间的不能省略
  • 和其它语言不同的是循环语句没有while,用for代替了
  • 和js一样很特别的for循环,多样性
  • 然后break和continue和其它也一样

5.switch语句

这个就更加特别了,咱还是先看代码

 b := 2
 switch b {
 case 1:
     fmt.Println(1)
 case 2:
     fmt.Println(2)
 default:
     fmt.Println(3)
 }
 t := time.Now()
 switch {
 case t.Hour() > 20:
     fmt.Println("It's night now.")
 default:
     fmt.Println("It's not night now.")
 }
  • 第一个和其它一样,没什么特别,相对于c就是b不加()
  • 第二个就很特别,switch后面可以不给变量,并且case后面可以跟任意变量,那时学c的时候就苦恼于case后面的变量太局限性,无奈写了很繁琐的if语句
  • 别的暂时没有发现,然后就是学了一个time,获取系统时间,也是规规矩矩没什么很特别,不过我很喜欢简洁至上

今日总结:

今天没有学很多,不过已经发现go的独树一帜,这个语言很特别,就比如它省略了while循环而是用for代替,它的switch语句可以使用更多变量类型,更加开放性,还有变量命名也很特别,其它数据类型再变量名后前面,它却在后面。。。很多让人意想不到的惊喜,因为刚接触没很多知识上的总结。

我只想说一句,go很惊艳,也很大胆,突然很期待我与go的奇幻之旅,后续请关注下集!

瑞思拜😮😮😮