• 1.1 Go安装与项目结构初始化


    软件安装

    安装包下载地址为:https://golang.org/dl/

    如果打不开可以:

    https://golang.google.cn/dl/

    https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz

    wget https://dl.google.com/go/go1.10.3.src.tar.gz #源码包
    wget https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz #运行包

    新版(2020-04-04)
    wget https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz

    新版(2020-05-24)

    wget https://dl.google.com/go/go1.14.3.linux-amd64.tar.gz

     新版(2020-08-27)预计该版本将很长时间内不会在大变动

    wget https://golang.org/dl/go1.15.linux-amd64.tar.gz

    tar -zxvf go1.10.3.linux-amd64.tar.gz
    mv go /usr/local/

    环境变量设置
    GO语言有软件工程或项目的思想,
    创建项目目录
    mkdir -p goapp/{src,bin,pkg}
    设置项目环境变量,GOROOT为go安装目录,GOPATH为项目所在目录

    vim /etc/profile
    export GOROOT=/usr/local/go
    export GOPATH=/usr/local/automng/src/goapp
    export PATH=$PATH:$GOROOT/bin

    export GOROOT=/opt/app/go
    export GOBIN=/opt/wks/go/gopath/bin
    export GOPATH=/opt/wks/go/gopath
    export PATH=$PATH:$GOROOT/bin:$GOBIN

    source /etc/profile
    which go
    /usr/local/go/bin/go

    GOPATH允许有多个路径,以冒号分隔即可;第一个目录并不完全与后面的等价,在使用go get 下载go项目时,只会写入到GOPATH的第一分区


    GO 包引用
    一个项目通常只有一个入口,即一个main

    mkdir -p src/{main,ch01,ch02}
    mkdir src/ch02/ch0201
    
    $ cat src/ch01/a.go 
    package ch01
    var a = "鱼只有七分钟的记忆吗?"
    var b uint16= 65534
    var c bool = true
    
    //供外部调用的方法一定要以大写字母开头
    func Show(){
       println(a,b,c)
    }
    
    $ cat src/ch02/b.go 
    package ch02
    
    var a int = 10
    var b = 10
    
    func Show(){
       //该声明方式必须写在方法内部
       c := 10
       println(a,b,c)
    }
    
    $ cat src/ch02/ch0201/bb.go 
    package ch0201
    import "fmt"
    
    func Show() {
       const LENGTH int = 10
       const WIDTH int = 5   
       var area int
       const a, b, c = 1, false, "str" //多重赋值
    
       area = LENGTH * WIDTH
       fmt.Printf("面积为 : %d", area)
       println()
       println(a, b, c)   
    }
    
    $ cat src/main/main.go 
    package main
    
    import (
        "ch01"
        "ch02"
        "ch02/ch0201"
    )
    
    func main(){
        ch01.Show()
        ch02.Show()
        ch0201.Show()
    }

    GO语言的执行
    可以使用 go run aa.go的运行脚本
    $ go run src/main/main.go
    鱼只有七分钟的记忆吗? 65534 true
    10 10 10
    面积为 : 50
    1 false str

    编译GO脚本为可执行文件
    将以上程序打包编译为一个可执行文件,前提是要设置GOPATH目录,go build会自动去$GOPATH/src目录下寻找相关目录,一个脚本中只能有一个package main包,即只有一个入口

    以下这个命令可以在系统的任何目录下执行,go会自动去$GOPATH/src目录下找main目录
    $ go build -o testgo main
    $ ll
    total 1976
    -rwxrwxr-x 1 tanpengfei tanpengfei 2020337 Sep 28 10:44 testgo
    $ ./testgo
    鱼只有七分钟的记忆吗? 65534 true
    10 10 10
    面积为 : 50
    1 false str

    当然了,一个main目录可以有多个main包的文件,程序本身不会报错,但你就不无法在该目录下使用go build了,只能使用go run aa.go,所以建议一个包下只有一个main入口

    go build的目录

    go build -o execname main 中的main是一个目录,可以修改为其他目录,比如build,但这个目录是GOPATH变量中的第一个分支下的目录,比如下面的变量定义

    export GOPATH=/opt/code/gopath:/disk/git/goapp/goapp:$GOPATH

    那么执行go build -o execname build 表示将/opt/code/gopath/src/build目录的程序打包为execname可执行文件

    因此go build -o execname build这条命令可在系统上的任意位置执行

    补充说明

    使用IDE创建go项目时,会自动创建三个目录:src,bin,pkg
    进入一个包含main方法的目录,执行 go install ,会在pkg下生成以一个以.a为后缀的文件(对我们没用,当文件存在时不会重复生成而是直接使用),然后在bin目录下生成一个可执行文件
    进入一个包含main方法的目录,执行 go build,每次都会重新拉取所有涉及到的代码编辑并生成可执行文件

    重点总结

    GOPATH的作用:程序的运行、编译都是以GOPATH为基础的

  • 相关阅读:
    js对象方法
    重要的小知识点
    vs2017引用vue组件中文乱码
    单行文本溢出打点、多行文本溢出打点
    span和input布局时对不齐
    在思科三层交换机上配置DHCP,不同网段/VLAN间互通
    搭建ssm整合
    使用Redis
    MyBatis常用实现方式
    Java 面向对象
  • 原文地址:https://www.cnblogs.com/perfei/p/9717394.html
Copyright © 2020-2023  润新知