go初探 [起步]

最近开始学习go,边学边做一份笔记,帮助自己,帮助他人,如果有写错的地方,欢迎大家纠正,感激不尽。

安装

这里以二进制包为例

  1. 下载二进制包 wget https://studygolang.com/dl/golang/go1.15.7.linux-amd64.tar.gz

  2. 将下载的二进制包解压至 /usr/local目录 tar -C /usr/local/ -xzf go1.15.7.linux-amd64.tar.gz

  3. /usr/local/go/bin 目录添加至PATH环境变量 export PATH=$PATH:/usr/local/go/bin

  4. hello world

     //创建一个hello.go文件
     package main    //声明包,每个脚本中必须包含
     import "fmt"    //下面代码中会使用到的包,没使用到不要import,否则报错
     func main() {   //主函数,每个程序文件中必须有,第一个执行的函数(有init则init先执行)
     fmt.Println("hello world")   //使用fmt包中的Println打印,fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n ,使用 fmt.Print("hello, world\n") 可以得到相同的结果
     }
    
     //使用go run执行
     $ go run hello.go 
     hello world
    
     //使用go build来生成二进制可执行文件
     go build hello.go
     $ ./hello
     hello world
    
     windows上编译后,.exe后缀,同样可以执行,这样就很容易跨平台,并且单独执行一些自动化的任务

可以看到init函数比main函数先执行,因为可以做一些初始化任务
go学习之路 --- 起步

特别说明

go和php一些不一样的地方,特此说明

  1. go中,一个大写开头的变量,常量,函数等名称的,比如上面的Println(), 则可以被包外部代码所使用,可以看作PHP中的public,比如一个脚本中调用某个类,在类外部,我们只能使用public声明的方法和属性;如果是小写开头的,则包外部是不可见的,包内部是可见可用的,类似protected

  2. 花括号问题

    func main()  
    {  // 错误,不能单独作为一行(php中是可以的)
     fmt.Println("Hello, World!")
    }

go学习之路 --- 起步

  1. 结束分隔符问题
    go中,一条代码语句结束,作为一行,是不需要加结束分隔符的;当然,加了也不会报错的
    go学习之路 --- 起步
    如果多条代码语句在同一行,则必须加分隔符,否则报错
    go学习之路 --- 起步

  2. 字符串拼接符 +
    php中是 . , js和java,go中都是 +
    go学习之路 --- 起步

  3. 空格的使用
    加空格,有些是必须的,有些会更具可读性

    var age int
    fruit = apples + oranges 
  4. go中字符串必须使用双引号,使用单引号会报错,这个和php很不一样,php中都可以使用,php的双引号可以解析变量; go中并不能

  5. go中变量必须先声明才能使用,并且变量必须在程序中被使用过,否则编译报错
    go学习之路 --- 起步
    可以看到我声明了一个name变量,但是没有使用过它,编译时直接报错,其实和上面fmt包引入后,没有使用其中的任何元素,会报错是一个意思;

  6. go中的变量声明是可以省略数据类型的,声明时是可以赋初值的,不给初值,系统会默认给一个的,变量的声明使用后面会讲到;

总结:

  • 可以看到go可以很方便的编译打包成各平台的,可执行的,程序文件运行,并且不依赖多余的运行环境,这样我们除了写大型项目,也可以写一些实用的小脚本跨平台运行;
  • 还可以看到go中的代码风格是比较严谨的,比如变量声明就必须得使用,这一点可以让我们很方便的检测出代码中哪些变量没有被使用到,避免内存浪费;当然可能会导致函数返回值多余问题,这个后面讲到;
本作品采用《CC 协议》,转载必须注明作者和本文链接
六月的风
Junwind
讨论数量: 2

多多更新呀,老哥

2年前 评论
Junwind (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!