go语言
##
用终端运行go
➜ ~ git:(master) ✗ cd /Users/tianzi/Desktop/时间复杂度
➜ 时间复杂度 git:(master) ✗ cd go
进入go文件夹
➜ go git:(master) ✗ go run hi.go
Hello World!
➜ go git:(master) ✗ go run go.go
package main:
go.go:4:1: illegal character U+00A0
go.go:4:3: illegal character U+00A0
go.go:4:5: illegal character U+00A0
走了。go:4:5:非法字符U+00A0
hi.go
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
mac搭建go环境
特色下载
https://golang.google.cn/dl/
Mac 可直接下载pkg一键安装
windows主要配置以下几个:
GOROOT:Go 安装后的根目录(例如:D:\Go),安装过程中会由安装程序自动写入系统环境变量中。
GOBIN:Go 的二进制文件存放目录(%GOROOT%\bin)
PATH:需要将 %GOBIN% 加在 PATH 变量的最后,方便在命令行下运行。
GOPATH 工作空间是一个目录层次结构,其根目录包含三个子目录:
src:包含 Go 源文件,注意:你自己创建依赖的package,也要放到GOPATH 目录下,这样才能够被引用到。
pkg:包含包对象,编译好的库文件
bin:包含可执行命令
go 编辑器Goland
(一个强大的go编辑器,推荐使用)
Goland下载地址 https://www.jetbrains.com/
配置环境变量:GOPATH和GOBIN
(1)打开终端,cd ~
(2)查看是否有.bash_profile文件:ls -all
(3)没有.bash_profile文件,则需要创建:touch .bash_profile
➜ ~ git:(master) ✗ go version
go version go1.13 darwin/amd64
➜ ~ git:(master) ✗ open ~/.bash_profile
(4)打开.bash_profile文件
(5)自定义GOPATH和GOBIN:
export GOPATH=/Users/clude/Documents/gostudy/go_learning
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
➜ ~ git:(master) ✗ source: ~/.bash_profile
zsh: command not found: source:
(6)编译.bash_profile文件:source: ~/.bash_profile
➜ ~ git:(master) ✗ go env
GO111MODULE=""
GOARCH="amd64"
终端进行交互的操作;go与终端进行操作
tt.cpp文件
include <iostream>
using namespace std;
int main()
{
string ch;
while(1)
{
cout<<"please input:";
cin>>ch;
cout<<ch<<endl;
}
return 0;
}
编译g++ tt.cpp -o tt
这个没用
输入命令 go run test.go 就可以执行看到输出效果
go.go文件
package main
import (
"log"
"os"
"os/exec"
"time"
expect "github.com/Netflix/go-expect"
)
func main() {
c, err := expect.NewConsole(expect.WithStdout(os.Stdout))
if err != nil {
log.Fatal(err)
}
defer c.Close()
cmd := exec.Command("./tt")
cmd.Stdin = c.Tty()
cmd.Stdout = c.Tty()
cmd.Stderr = c.Tty()
go func() {
c.ExpectEOF()
}()
err = cmd.Start()
if err != nil {
log.Fatal(err)
}
time.Sleep(time.Second)
c.Send("Hello\r")
time.Sleep(time.Second)
c.Send("world\r")
err = cmd.Wait()
if err != nil {
log.Fatal(err)
}
}