Go中需要配置三个环境变量,分别是:
GOROOT:Go的安装目录
PATH:Go的安装目录下的bin目录
GOPATH:Go的项目目录
【注意】将GOROOT和PATH配置到系统的环境变量中,但是GOPATH不直接在系统变量中配置成一个固定的配置,因为我们可能在一个系统中创建多个Go项目,每一个项目都需要配置一个GOPATH变量,这显然是繁琐而且非常难以管理的,所以我们在创建项目的时候,直接通过IDE在创建项目的时候来配置GOPATH变量,这样就可以给每个Go项目都配置上对应的GOPATH路径。
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println(os.Args)
if len(os.Args) > 1 {
fmt.Println("Hello World ", os.Args[1])
}
os.Exit(-1)
}
退出返回值
与其他主要编程语言的差异
func main(arg []string)
fmt标准包
func Printf(format string, a ...interface{}) (n int, err error)
还可以
直接通过%b输出二进制,更多格式设置见fmt标准包的官方文档说明package main
import "fmt"
func main() {
num := 15
fmt.Printf("十进制 = %d\n", num)
fmt.Printf("八进制 = %o\n", num)
fmt.Printf("十六进制 = %x\n", num)
fmt.Printf("二进制 = %b\n", num)
}
package main
import "fmt"
func main() {
type Person struct {
name string
age int
}
num1 := 10
num2 := 3.14
per := Person{"lnj", 33}
fmt.Printf("num1 = %T\n", num1) // int
fmt.Printf("num2 = %T\n", num2) // float64
fmt.Printf("per = %T\n", per) // main.Person
}
package main
import "fmt"
func main() {
type Person struct {
name string
age int
}
num1 := 10
num2 := 3.14
per := Person{"lnj", 33}
// 此时相当于把%v当做%d
fmt.Printf("num1 = %v\n", num1) // 10
// 此时相当于把%v当做%f
fmt.Printf("num2 = %v\n", num2) // 3.14
}
func Println(a …interface{}) (n int, err error)
会
在结尾处添加换行package main
import "fmt"
func main() {
num1 := 10
num2 := 3.14
fmt.Println(num1, num2) // 10 3.14
fmt.Println("num1 =", num1, "num2 =", num2) // num1 = 10 num2 = 3.14
type Person struct {
name string
age int
}
per := Person{"lnj", 33}
fmt.Println(per) // {lnj 33}
}
func Print(a …interface{}) (n int, err error)
不会
在结尾处添加换行都不是
字符串,才会在相邻参数之间添加空格package main
import "fmt"
func main() {
num1 := 10
num2 := 3.14
fmt.Print(num1, num2) // 10 3.14
fmt.Print("num1 =", num1, "num2 =", num2) // num1 =10 num2 =3.14
type Person struct {
name string
age int
}
per := Person{"lnj", 33}
fmt.Print(per) // {lnj 33}
}
以下三个函数和Printf/Println/Print函数一样, 只不过上面三个函数是输出到标准输出, 而下面三个函数可以通过w指定输出到什么地方
package main
import (
"fmt"
"net/http"
"os"
)
func main() {
// os.Stdout 写入到标准输出
name := "lnj"
age := 33
// 第一个参数: 指定输出到什么地方
// 第二个参数: 指定格式控制字符串
// 第三个参数: 指定要输出的数据
fmt.Fprintf(os.Stdout, "name = %s, age = %d\n", name, age)
// http.ResponseWriter 写入到网络响应
http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
fmt.Fprintf(writer, "name = %s, age = %d\n", name, age)
})
http.ListenAndServe(":8888", nil)
}
package main
import (
"fmt"
"net/http"
"os"
)
func main() {
name := "lnj"
age := 33
// 按照指定的格式生成字符串
str := fmt.Sprintf("name = %s, age = %d\n", name, age)
// 输出生成的字符串
fmt.Println(str)
}
func Scanf(format string, a …interface{}) (n int, err error)
package main
import "fmt"
func main() {
var num1 int
var num2 int
fmt.Scanf("%d%d", &num1, &num2)
fmt.Println(num1, num2)
}
func Scan(a …interface{}) (n int, err error)
package main
import "fmt"
func main() {
var num1 int
var num2 int
fmt.Scan(&num1, &num2)
fmt.Println(num1, num2)
var num3 float32
var num4 float32
fmt.Scan(&num3, &num4)
fmt.Println(num3, num4)
}
func Scanln(a …interface{}) (n int, err error)
package main
import "fmt"
func main() {
var num1 int
var num2 int
fmt.Scanln(&num1, &num2)
fmt.Println(num1, num2)
}
以下三个函数和Scan/Scanln/Scanf函数一样, 只不过上面三个函数是从标准输入读取数据, 而下面三个函数可以通过r指定从哪读取数据
package main
import "fmt"
func main() {
var num1 int
var num2 int
// 第一个参数: 指定从哪读取数据
// 第二个参数: 指定格式控制字符串
// 第三个参数: 指定要输出的数据
fmt.Fscanf(os.Stdin, "%d%d", &num1, &num2)
fmt.Println(num1, num2)
s := strings.NewReader("lnj 33")
var name string
var age int
// 从指定字符串中扫描出想要的数据
// 注意:
fmt.Fscanf(s, "%s%d", &name, &age)
fmt.Println("name =",name, "age =",age)
}
package main
import "fmt"
func main() {
str := "lnj 33"
var name string
var age int
//fmt.Sscanf(str, "%s %d",&name, &age)
//fmt.Sscanln(str,&name, &age)
fmt.Sscan(str,&name, &age)
fmt.Println("name =",name, "age =",age)
}
场景:如何从标准输入读取带空格的字符串?
方法:使用bufio包里带缓冲的Reader实现带空格字符串的输入
package intout
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func ReadFromASpaceString() {
inputReader := bufio.NewReader(os.Stdin)
fmt.Println("Please input your name: ")
//input, err := inputReader.ReadBytes('\n')
input, err := inputReader.ReadString('\n')
if err == nil {
//fmt.Printf("Your bname is :%s, and type is %T\n", input, input)
//ss := strings.Split(input, " ")
ss := strings.Trim(input, "\n")
ss1 := strings.Split(ss, " ")
fmt.Printf("Your name is :%v, and type is %T\n", ss,
ss)
fmt.Printf("Your name is :%v, and type is %T\n", ss1, ss1)
fmt.Printf("Your name is :%v, and type is %T\n", ss1[0], ss1[0])
num1, err := strconv.Atoi(ss1[0])
if err != nil {
fmt.Println(err)
}
fmt.Printf("Your name is :%v, and type is %T\n", num1, num1)
}
}
|—项目文件夹
-----------|--------src文件夹
-----------------------------|--------main文件夹
-----------------------------|--------其它文件夹
-----------|--------bin文件夹
-----------|--------pkg文件夹
go version
查看当前安装的go版本
go env
查看当前go的环境变量
go fmt
格式化代码
go run 命令文件
编译并运行go程序
go build
编译检查
go build 文件名称
go install
安装程序
go env
查看当前go的环境变量
go fmt
格式化代码
go run 命令文件
编译并运行go程序
go build
编译检查
go build 文件名称
go install
安装程序