这是我参与「第五届青训营 」伴学笔记创作活动的第 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))
}
运行结果也显而易见:
额,math包就是个数学函数包,同理Java的Math。
2、循环语句
只有for循环,多种样式:for { }就是个死循环,当然也有最标准的for循环——for n := 0; n < 5; n++ { },还有标准的while循环——当然也是for变种for i <= 3 { }。
这东西我觉得不需要代码,跟Java的区别就是……不用加()。
3、条件判断语句
if和switch还都在。
if语句
跟Java没啥区别,if,else if,else还是这三个,不过不用(),但必须有{}。
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函数,跟其他语言一样
运行结果如下:
三、今天收个尾
怎么说呢,对于一个没有学过数据流的人来说,这个项目想要很大程度的融入进去可能性已经挺低了,只能说去学习一下Go,毕竟很多Java的老前辈、老学长也跟我护送过转Go的想法,但是是在他们已经熟练运用Java的情况下,而我还仅仅只是一个在路上的人。明天的话,我会按照自己当时学Java的顺序,去研究一下Go语言的面向对象相关知识……