Golang

作者: __子不语__ | 来源:发表于2020-11-01 12:43 被阅读0次

    默认安装目录: /usr/local/go/
    编译器启动文件: /usr/local/go/bin/go

    配置环境

    export PATH=/usr/local/go/bin:$PATH

    • src 放置编写的go代码和依赖

      • crm

        • app.go

    bin 编译可执行文件

    pkg 包文件 公共文件

    Go安装目录

    export GOROOT=/usr/local/go

    代码和编译之后的文件相关代码

    export GOPATH=/Users/zoe/GolangProjects

    存放可执行编译之后的文件

    export GOBIN=/Users/zoe/GolangProjects/bin

    生效

    记得mac要换成bash的shell

    vim .bash_profile
    source ~/.bash_profile
    ~/.profile #不一定有用
    
    编译运行

    go run

    命令等价于先执行 go build 生成可执行文件,然后再运行可执行文件,相当于二合一的操作。
    编译器的run会生成一个可执行文件在/private/var/folders路径下然后执行

    go build

    执行完命令之后,就会在当前项目目录下自动生成一个可执行文件(默认文件名为项目),然后在执行此可执行文件即可。

    go install

    命令内部不仅可以对代码进行编译并还会将编译好的文件放在 $GOPATH/src 和 $GOPATH/pkg目录。

    如果blog项目没有main包(只是一个类库),则install生成的 包文件 会放在 $GOPATH/pkg 目录;有main包则生成的 可执行文件 放在$GOPATH/src 目录。

    mac系统会自动生成darwin_amd64目录,根据系统不同生成此目录会有差异。

    一个文件夹为一个包
    一个包下的所有文件package名必须一样,可以不和文件夹名一样

    main包

    必须写main函数,整个项目的入口。编译生成一个可执行文件。
    不是main包,只有main函数则生成包文件,放在pkg 包名.a

    非main包

    代码分类

    import (
    "fmt"
    "zoe/api"
    )
    
    func main() {
    Add()
    apia.BaiDu()
    apia.Google()
    }
    

    import是路径名 api
    调用的是包名apia
    一个文件夹下有多个go文件,它们的package名必须一样,但可以不和文件夹名一样;
    //文件中编写功能时,首字母大写
    //大写时公有,小写私有当前自己的包使用

    输出

    内置函数

    print
    println

    fmt包

    fmt.Pring
    fmt.PrintLn

    进程里有stdin/stdout/stderr

    name := "lalala"
    nickname := name
    fmt.Println(name, &name )
    fmt.Println(nickname, &nickname )
    

    int、string、bool是值类型

    输入

    有黄色背景表示有返回,但没有获取
    有多个返回不能, :=写,可以直接写,=

    count,err := fmt.Scan(&name, &age)   //回车,无法结束,必须等到所有输入
    count,err := fmt.Scanln(&name, &age)  //回车,可以直接结束
    _, _ = fmt.Scanf("哈哈哈%s 急急急", &name) //需要加空格分割,否则不稳定
    

    用stdin的方式可以解决输入有空格的问题

        reader := bufio.NewReader(os.Stdin)  //标准输入
        line, _, _ := reader.ReadLine()  //所有都是_才去掉:
        //line, 从stdin中读取一行数据(字节集合 转化为 字符串)
        //isPrefix  reader默认一次能读4096个字节(4096/3个汉字)一次性读完
        //        1.isPrefix==false
        //        2.先读一部分,isPrefix==true,再去读取isPrefix==false
    
        data := string(line)
        fmt.Println(data)
    

    go里10进制是int型
    2 8 16进制是string

    相关文章

      网友评论

          本文标题:Golang

          本文链接:https://www.haomeiwen.com/subject/chiyvktx.html